Как разрезать список от элемента n до конца в python?

У меня возникли проблемы с выяснением того, как нарезать списки 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?

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


person FurtiveFelon    schedule 07.03.2009    source источник


Ответы (7)


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

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

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

 start = 4
 end = None
 test[start:end]
person recursive    schedule 07.03.2009
comment
О, спасибо! Я искал это, но не знал, как это искать :). Я чувствую, что принятый ответ без этого неполный, потому что оставить конечный индекс тривиально и имеет достаточно документации. - person Sumudu; 05.05.2018

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

test[n:]
person Matthew    schedule 07.03.2009

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

range(10)[3::2] => [3, 5, 7, 9]
person Doug Bradshaw    schedule 28.01.2016

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

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
person MarMat    schedule 29.08.2017

Вы также можете использовать 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)
person kmario23    schedule 17.07.2018

То, что вы ищете, это использовать что-то вроде:

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

Выход:

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

Смотрите, если i == 0

затем inputs[:i] == [] и inputs[i:i+1] == a

а если i == len(inputs) - 1

затем inputs[:i] == [ababbbaAa] и inputs[i:i+1] == b

person Otieno Rowland    schedule 30.09.2020