我最近一直在阅读一些示例代码并且我已经阅读了不少网站,但我似乎无法正确地向我提供我正在寻找的答案。如果有人能帮助我,我会很感激。
答案 0 :(得分:28)
切片
x[startAt:endBefore:skip]
如果您使用skip = 2
,则会选择从startAt
开始到endBefore
结尾的所有其他元素。 [记住:指数列在BETWEEN列表元素中]
要查看此内容,请输入
x = range(100)
在Python提示符下。然后尝试这些事情
x[::2]
x[::3]
x[10:40:6]
看看会发生什么。
答案 1 :(得分:21)
L[x::y]
表示L
切片,其中x
是开始的索引,y
是步长。以下是您可以在解释器中尝试的一些示例
>>> L=range(20)
>>> L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
如果你想要每个第3个元素
>>> L[::3]
[0, 3, 6, 9, 12, 15, 18]
现在每个第三个元素从L [1]
开始>>> L[1::3]
[1, 4, 7, 10, 13, 16, 19]
现在每个第三个元素从L [2]开始
>>> L[2::3]
[2, 5, 8, 11, 14, 17]
您可以指定一个反向步骤
>>> L[::-1]
[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
您也可以指定此切片,但该值必须与要替换的切片具有相同的长度
>>> L[::3]=[0,0,0,0,0,0,0]
>>> L
[0, 1, 2, 0, 4, 5, 0, 7, 8, 0, 10, 11, 0, 13, 14, 0, 16, 17, 0, 19]
最后,您可以删除每个第3个元素
>>> del L[::3]
>>> L
[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19]
答案 2 :(得分:3)
这是列表切片的语法。 当你说,
list[a:b:c],
a是起始索引,b是结束索引,c是可选步长。 这将为您提供一个列表,从索引a(包括)开始,到索引b(不包括),在c的步骤中选择元素。
例如,
l = [1,2,3,4,5,6,7]
如果我说l [2:6:2],这将给我[3,5]。
如果你跳过结束索引,就像在你的问题中那样,它将从起始索引(x)中获取元素,选择每个第y个元素,直到它到达列表的末尾,如果y为正,则列表的开头为y是否定的。
E.g。 l [1 :: - 1] = [2,1]
l [1 :: 2] = [2,4,6]
默认步长为1.
答案 3 :(得分:1)
这意味着从x
创建一个新列表,直到步骤y
结束:
>>> l = range(10)
>>> list(l[2::2])
[2, 4, 6, 8]
答案 4 :(得分:0)
返回一个列表,其中包含从索引x开始的列表的每个第y个元素。
>>> alist = range(10)
>>> alist[0::2]
[0, 2, 4, 6, 8]
答案 5 :(得分:0)
这是一个切片。
[开始:结束:步骤]
留下任何空白都会将它们置于默认值,在您的情况下,它会从y
开始每个x
个元素,直到列表的末尾。
请参阅:What is :: (double colon) in Python when subscripting sequences?