提问人:FurtiveFelon 提问时间:3/7/2009 最后编辑:kmario23FurtiveFelon 更新时间:7/28/2022 访问量:166971
如何在python中将列表从元素n切到末尾?
How to slice a list from an element n to the end in 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 slice 的意思是 lst[start:end],包括 start,不包括 end。那么,我该如何从元素 n 开始查找列表的“其余部分”呢?
非常感谢您的帮助!
答:
126赞
Angela
3/7/2009
#1
您可以通过不指定值来保持切片的一端处于打开状态。
test[3:] = [3, 4, 5, 6, 7, 8, 9]
test[:3] = [0, 1, 2]
18赞
Matthew
3/7/2009
#2
只需省略结尾即可。
test[n:]
126赞
recursive
3/7/2009
#3
如果使用变量作为范围终结点,则可以使用 。None
start = 4
end = None
test[start:end]
评论
4赞
Anubis
5/5/2018
谢谢!我一直在寻找这个,但不知道如何:)搜索它。我觉得没有这个,公认的答案是不完整的,因为留下一个结束索引是微不足道的,并且有足够的文档。
1赞
mightypile
3/5/2023
同样的技术对于对 slice(4, None) 做同样的事情也非常有用,其中冒号方法不起作用。
5赞
Doug Bradshaw
1/29/2016
#4
当您想跳过一些结尾时,省略结尾仍然有效:
range(10)[3::2] => [3, 5, 7, 9]
3赞
MarMat
8/29/2017
#5
在起始值后返回列表的切片:
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
评论
1赞
FullMetalScientist
7/21/2022
尽管这是示例代码,但最好不要用作变量名称list
3赞
kmario23
7/17/2018
#6
切片时,还可以将 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)
1赞
Otieno Rowland
10/1/2020
#7
你要找的是使用类似的东西:
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
评论