Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表[x::y]做什么?_Python_Syntax - Fatal编程技术网

Python 列表[x::y]做什么?

Python 列表[x::y]做什么?,python,syntax,Python,Syntax,可能重复: 我最近一直在阅读一些示例代码,我也阅读了不少网站,但我似乎无法正确地得到问题的答案。如果有人能帮助我,我将不胜感激。这意味着从x创建一个新列表,直到步骤y结束: >>> l = range(10) >>> list(l[2::2]) [2, 4, 6, 8] 返回一个列表,该列表包含从索引x开始的列表的每个yth元素 >>> alist = range(10) >>> alist[0::2] [0, 2, 4

可能重复:


我最近一直在阅读一些示例代码,我也阅读了不少网站,但我似乎无法正确地得到问题的答案。如果有人能帮助我,我将不胜感激。

这意味着从
x
创建一个新列表,直到步骤
y
结束:

>>> l = range(10)
>>> list(l[2::2])
[2, 4, 6, 8]

返回一个列表,该列表包含从索引x开始的列表的每个yth元素

>>> alist = range(10)
>>> alist[0::2]
[0, 2, 4, 6, 8]
它切片

x[startAt:endBefore:skip]
如果使用
skip=2
,则每隔一个元素就会选择从
startAt
开始到
endBefore
结束的列表。[记住:索引在列表元素之间活动]

要查看此信息,请输入

x = range(100)
在Python提示符下。那么试试这些东西

x[::2]
x[::3]
x[10:40:6]
看看会发生什么。

这是一个切片

[开始:结束:步骤]

保留任何空白都会将它们设置为默认值,在您的示例中,它将从
x
开始,直到列表末尾,获取每个
y
元素


请参阅:

这是列表切片的语法。 当你说

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为正,则选取每个yth元素,直到它到达列表的末尾,如果y为负,则选取列表的开头

例如,l[1::-1]=[2,1]

l[1::2]=[2,4,6]


默认步长为1

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]
如果你想要第三个元素

>>> 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]
最后,您可以像这样删除每三个元素

>>> del L[::3]
>>> L
[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19]

如果你稍微搜索一下,你会发现很多帖子都有类似的问题(和类似的答案)。我想这个必须关上