我在弄清楚如何对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开始找到列表的“休息”?
非常感谢你的帮助!
答案 0 :(得分:61)
您可以通过不指定值来保持切片的一端打开。
test[3:] = [3, 4, 5, 6, 7, 8, 9]
test[:3] = [0, 1, 2]
答案 1 :(得分:58)
如果您使用变量作为范围端点,则可以使用None
。
start = 4
end = None
test[start:end]
答案 2 :(得分:8)
简单地省略结束。
test[n:]
答案 3 :(得分:4)
当你想跳过一些时,离开结尾仍然有效:
range(10)[3::2] => [3, 5, 7, 9]
答案 4 :(得分:1)
在起始值后返回列表的一部分:
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
答案 5 :(得分:0)
切片时,也可以将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)
答案 6 :(得分: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