list [x :: y]是做什么的?

可能重复:
Python切片符号的良好入门

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


它切片

x[startAt:endBefore:skip]

如果使用skip = 2 ,则将选择以endBefore开始并在startAt结束的所有其他元素。 [请记住:索引在BETWEEN列表元素中生效]

要查看此信息,请输入

x = range(100)

在Python提示符下。 然后尝试这些东西

x[::2]
x[::3]
x[10:40:6]

并看看会发生什么。


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]

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

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是负数,则列表开始。

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

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

默认步长是1。

链接地址: http://www.djcxy.com/p/26733.html

上一篇: What does list[x::y] do?

下一篇: 1] mean/do in python?