如何解释Python切片语法列表中的第一个冒号[:: - 1]

时间:2014-03-30 14:36:22

标签: python list

我最近阅读了有关如何反转序列的代码片段

>> l = [1,2,3,4,5,6]
>> print l[::-1]

输出

>> [6,5,4,3,2,1]

如何解释括号中的第一个冒号?

2 个答案:

答案 0 :(得分:9)

没有给出值的冒号意味着求助于默认值。步骤为负时,起始索引的默认值为len(l),结束索引为-len(l)-1。因此,反向切片可以写为

l[len(l):-len(l)-1:-1]

的形式。

l[start:end:step]

删除默认值,我们可以使用较短的表示法l[::-1]

Python's Slice Notation上查看此问题可能会有用。

答案 1 :(得分:2)

some_list[start:end:step]

当你省略任何切片操作数时,它们采用默认值。 开始结束步骤的默认值: start - 索引可迭代的开头,当步为正时,它始终为索引0, end - 索引可迭代的结束索引,当步为正时,它始终是其长度(遵循与范围相同的约定), 步骤 - 默认步骤始终为一步。

当您在步骤中使用减号而省略其他操作数时,您基本上会说“返回反向列表”。

编辑:有趣,但

[1,2,3,4,5,6][5:-7:-1]

返回与

相同的结果
[1,2,3,4,5,6][::-1]
Python3中的

。任何人都可以评论为什么? 这意味着 start end 的默认值实际上依赖于步操作数(更具体地说是其符号)。