如何在 python 中将列表从元素 n 切割到末尾?

我在解决如何分割 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 ] ,包括 start,不包括 end。那么我该如何去寻找从元素 n 开始的列表的“其余部分”呢?

非常感谢你的帮助!

143217 次浏览

通过不指定值,可以保持切片的一端处于打开状态。

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

只是省略了结尾。

test[n:]

如果使用变量作为范围端点,则可以使用 None

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

当你想跳过某些部分时,省略结尾仍然有效:

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

返回列表中起始值后面的一个片段:

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

在切片时,还可以对 结束参数使用 强 > None关键字。这也会返回一直到列表末尾的元素(或者任何 序列,比如 tuple、 string 等)

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

你要找的是这样的东西:

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