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

PythonListSequenceSlice

Python Problem Overview


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!

Python Solutions


Solution 1 - Python

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 - Python

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

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

Solution 3 - Python

Simply omit the end.

test[n:]

Solution 4 - Python

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

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

Solution 5 - Python

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)

Solution 6 - Python

Return a slice of the list after a starting value:

list = ['a','b','c','d']
start_from = 'b' # value you want to start with
slice = list[list.index(start_from):] # returns slice from starting value to end

Solution 7 - Python

What you are looking for is to use something like:

inputs = "ababbbaAab"
for i in range(n):
    print(i, inputs[:i] + inputs[i:i+1])

The output:

0 a
1 ab
2 aba
3 abab
4 ababb
5 ababbb
6 ababbba
7 ababbbaA
8 ababbbaAa
9 ababbbaAab

See that if i == 0

then inputs[:i] == [] and inputs[i:i+1] == a

and if i == len(inputs) - 1

then inputs[:i] == [ababbbaAa] and inputs[i:i+1] == b

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFurtiveFelonView Question on Stackoverflow
Solution 1 - PythonAngelaView Answer on Stackoverflow
Solution 2 - PythonrecursiveView Answer on Stackoverflow
Solution 3 - PythonMatthewView Answer on Stackoverflow
Solution 4 - PythonDoug BradshawView Answer on Stackoverflow
Solution 5 - Pythonkmario23View Answer on Stackoverflow
Solution 6 - PythonMarMatView Answer on Stackoverflow
Solution 7 - PythonOtieno RowlandView Answer on Stackoverflow