16.4. Slicing a List¶
Now that we know how to iterate through parts of a list, we could use that technique
to copy just part of a list. Say we have a list with the 12 months, and from it we
want to copy out just the summer months (June-August). We know those are months 6-8
(human numbering), which means in computer counting, they will be index 5-7. That
means we need to use
range(5, 8, 1) to loop through them. As we access each one,
we will append it to the
summerMonths list that starts out empty.
But, rather than do that work ourselves, there is syntax in Python for asking for part of a list.
Part of a list is known as a slice. We ask for a slice in a similar way to asking for a single
item. To get a single item from a list, say the item at index 4, we say
list. To ask for
a slice of
list we would say something like:
list[4:10] which says “I want a copy of items
number 4 through 9”. Notice that the second value, which is the stopping point, is not included
in the slice.
That means a much easier way to get a list of the summer months would be:
Remember that the slice always stops just before the second index given.
slices indexes 5-7.
There are some handy shortcuts we can use when specifying a slice. If you don’t give a
second index, like
[5:], it means “to the end of the list”. If you use a negative value,
it is counted from the end of the list.
[-3:-1] means “the slice from the third to the
last item up to but not including the last item”.
[-2:] would mean “the last two items”.
If the end index you give in the slice is less than the start one, like
you will always get an empty list as a result. Same if you specify a starting index
past the end of the list by doing something like