我最近阅读了有关如何反转序列的代码片段
>> l = [1,2,3,4,5,6]
>> print l[::-1]
>> [6,5,4,3,2,1]
如何解释括号中的第一个冒号?
答案 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 的默认值实际上依赖于步操作数(更具体地说是其符号)。