How to slice a list from an element n to the end in python?

119,660

Solution 1

You can leave one end of the slice open by not specifying the value.

test[3:] = [3, 4, 5, 6, 7, 8, 9]
test[:3] = [0, 1, 2]

Solution 2

If you're using a variable as the range endpoint, you can use None.

 start = 4
 end = None
 test[start:end]

Solution 3

Simply omit the end.

test[n:]

Solution 4

Leaving out the end still works when you want to skip some:

range(10)[3::2] => [3, 5, 7, 9]

Solution 5

You can also use the None keyword for the end parameter when slicing. This would also return the elements till the end of the list (or any sequence such as tuple, string, etc.)

# for list
In [20]: list_ = list(range(10))    
In [21]: list_[3:None]
Out[21]: [3, 4, 5, 6, 7, 8, 9]

# for string
In [22]: string = 'mario'
In [23]: string[2:None]
Out[23]: 'rio'

# for tuple
In [24]: tuple_ = ('Rose', 'red', 'orange', 'pink', 23, [23, 'number'], 12.0)
In [25]: tuple_[3:None]
Out[25]: ('pink', 23, [23, 'number'], 12.0)
Share:
119,660
FurtiveFelon
Author by

FurtiveFelon

I am currently a student of Computer Science at the University of Waterloo.

Updated on July 05, 2022

Comments

  • FurtiveFelon
    FurtiveFelon almost 2 years

    I'm having some trouble figuring out how to slice python lists, it is illustrated as follows:

    >>> test = range(10)
    >>> test
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> test[3:-1]
    [3, 4, 5, 6, 7, 8]
    >>> test[3:0]
    []
    >>> test[3:1]
    []
    >>> test
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    To my understanding, python slice means lst[start:end], and including start, excluding end. So how would i go about finding the "rest" of a list starting from an element n?

    Thanks a lot for all your help!

  • Anubis
    Anubis about 6 years
    Oh thank you! i was looking for this, but didn't know how to search for it :). I feel the accepted answer is sort of incomplete without this, because leaving an end index is trivial and has enough documentation.