Как нарезать список от элемента n до конца в Python? - PullRequest
39 голосов
/ 07 марта 2009

У меня возникли проблемы с выяснением, как нарезать списки Python, это иллюстрируется следующим образом:

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

Насколько я понимаю, срез python означает lst [start: end] и включает начало, исключая конец. Так как же мне найти «остаток» списка, начиная с элемента n?

Большое спасибо за вашу помощь!

Ответы [ 6 ]

61 голосов
/ 07 марта 2009

Вы можете оставить один конец среза открытым, не указав значение.

test[3:] = [3, 4, 5, 6, 7, 8, 9]
test[:3] = [0, 1, 2]
58 голосов
/ 07 марта 2009

Если вы используете переменную в качестве конечной точки диапазона, вы можете использовать None.

 start = 4
 end = None
 test[start:end]
8 голосов
/ 07 марта 2009

Просто опустите конец.

test[n:]
4 голосов
/ 28 января 2016

Опускание конца все еще работает, когда вы хотите пропустить:

range(10)[3::2] => [3, 5, 7, 9]
1 голос
/ 29 августа 2017

Возвращает часть списка после начального значения:

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
0 голосов
/ 17 июля 2018

Вы также можете использовать ключевое слово None для параметра end при нарезке. Это также вернет элементы до конца списка (или любую последовательность , такую ​​как кортеж, строка и т. Д.)

# 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)
...