xxxxxxxxxx
The basic rules of slice are:
I'''
The slice generates index/integers from - start, start + step, start +
step + step, and so on. All the numbers generated must be less than
the stop value when step is positive.'''
II'''
If step value is missing then by default is taken to be 1 '''
III'''
If start value is missing and step is positive then start value is by default
taken as 0.'''
IV'''
If stop value is missing and step is positive then start value is by
default taken to mean till you reach the ending index(including the
ending index)'''
V'''
A negative step value means the numbers are generated in
backwards order i.e. from - start, then start - step, then start -step
-step and so on. All the numbers generated in negative step must
be greater than the stop value.'''
VI'''
If start value is missing and step is negative then start value takes default
value -1'''
VII'''
If stop value is missing and step is negative then stop value is by
default taken to be till you reach the first element(including the 0
index element)'''
xxxxxxxxxx
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
Slice position: 0 1 2 3 4 5 6
Index position: 0 1 2 3 4 5
>>> p = ['P','y','t','h','o','n']
# Why the two sets of numbers:
# indexing gives items, not lists
>>> p[0]
'P'
>>> p[5]
'n'
# Slicing gives lists
>>> p[0:1]
['P']
>>> p[0:2]
['P','y']
xxxxxxxxxx
a[::-1] # all items in the array, reversed
a[1::-1] # the first two items, reversed
a[:-3:-1] # the last two items, reversed
a[-3::-1] # everything except the last two items, reversed
xxxxxxxxxx
# array[start:stop:step]
# start = include everything STARTING AT this idx (inclusive)
# stop = include everything BEFORE this idx (exclusive)
# step = (can be ommitted) difference between each idx in the sequence
arr = ['a', 'b', 'c', 'd', 'e']
arr[2:] => ['c', 'd', 'e']
arr[:4] => ['a', 'b', 'c', 'd']
arr[2:4] => ['c', 'd']
arr[0:5:2] => ['a', 'c', 'e']
arr[:] => makes copy of arr
xxxxxxxxxx
word = "Example"
# Obtain the first 3 characters of "Example"
# E x a m p l e
# 0 1 2 3 4 5 6
# First 3 characters = "Exa"
sliced_word = word[:3] # Gives you "Exa"
# Everything after character #3 = "mple"
second_sliced_word = word[3:] # Gives you "mple"
xxxxxxxxxx
In Python, we perform slicing using the following syntax: [start: end].
fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]
sliced_fruits = fruits[1:3]
print(sliced_fruits) # ["Orange", "Lemon"]
Slicing in Python is very flexible. If we want to select the first n elements
of a list or the last n elements in a list, we could use the following code:
fruits[:n]
fruits[-n:]
fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]
print(fruits[:3])
# ["Banana", "Orange", "Lemon"]
print(fruits[-2:])
# ["Apple", "Mango"]
xxxxxxxxxx
l = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
x = slice(3)
print(l[x])
#gets the first three elemnets from list(array) l.
xxxxxxxxxx
# Accessing tuple elements using slicing
my_tuple = ('p','r','o','g','r','a','m','i','z')
# elements 2nd to 4th
# Output: ('r', 'o', 'g')
print(my_tuple[1:4])
# elements beginning to 2nd
# Output: ('p', 'r')
print(my_tuple[:-7])
# elements 8th to end
# Output: ('i', 'z')
print(my_tuple[7:])
# elements beginning to end
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple[:])