Python列表反转:[:: -1]?

4
我找不到有关[::-1]的任何信息。在wikibooks Python教程中,有一节关于非连续列表的内容,但没有关于参数<0的信息。效果很明显,但是如何解释呢?
示例用法:
>>> foo = [1, 2, 3]
>>> foo[::-1]
[3, 2, 1]
3个回答

8
语法如下所示:
foo[start:end:step] # begin with 'start' and proceed by step until you reach 'end'.

因此,foo[::-1]表示整个列表,步长为-1,实际上是将列表翻转。

详细解释请参见这个答案


2

需要补充的是:

foo[::-1]

创建给定数组的副本,而不影响foo本身。可以按以下方式进行赋值:

foo = [1,2,3]
bar = foo[::-1]
# print foo --> [1,2,3]
# print bar --> [3,2,1]

然而,要更新foo,使用以下方法:

foo.reverse()

首选。

2
负步长与 range(start, stop, step) 中的行为相同。 需要记住的是,无论高低,stop 始终是不包含的结尾。
人们经常感到惊讶,'0123456789'[5:0:-1] == '54321',而不是'43210'。如果您想要某个子序列,只需相反的顺序,单独进行反转更加清晰。例如,从左侧切片一个字符,从右侧切片两个字符,然后反转:'0123456789'[1:-2][::-1] == '7654321'。如果您不需要复制,只想循环,使用reversed()会更加可读:
for char in reversed('0123456789'[1:-2]):
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接