list [x :: y]做什么?

pri*_*ize 23 python syntax

可能重复:
Python Slice表示法的好入门

我最近一直在阅读一些示例代码并且我已经阅读了不少网站,但我似乎无法正确查询我给出的答案我正在寻找.如果有人能帮助我,我会很感激.

ncm*_*ist 32

切片

x[startAt:endBefore:skip]
Run Code Online (Sandbox Code Playgroud)

如果您使用skip = 2,则将选择开始于startAt结尾的列表中的每个其他元素endBefore.[记住:指数列在BETWEEN列表元素]

要查看此内容,请输入

x = range(100)
Run Code Online (Sandbox Code Playgroud)

在Python提示符下.然后尝试这些事情

x[::2]
x[::3]
x[10:40:6]
Run Code Online (Sandbox Code Playgroud)

看看会发生什么.


Joh*_*ooy 28

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]
Run Code Online (Sandbox Code Playgroud)

如果你想要每一个第三元素

>>> L[::3]
[0, 3, 6, 9, 12, 15, 18]
Run Code Online (Sandbox Code Playgroud)

现在每个第三个元素从L [1]开始

>>> L[1::3]
[1, 4, 7, 10, 13, 16, 19]
Run Code Online (Sandbox Code Playgroud)

现在每三个元素从L [2]开始

>>> L[2::3]
[2, 5, 8, 11, 14, 17]
Run Code Online (Sandbox Code Playgroud)

您可以指定一个倒退的反向步骤

>>> L[::-1]
[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)

您也可以指定此切片,但该值必须与要替换的切片具有相同的长度

>>> 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]
Run Code Online (Sandbox Code Playgroud)

最后,你可以删除这样的每个第3个元素

>>> del L[::3]
>>> L
[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19]
Run Code Online (Sandbox Code Playgroud)