Python列表还原:[:: - 1]?

时间:2012-03-29 07:17:24

标签: python list data-structures

我找不到关于[::-1]的任何信息。在wikibooks python tutorial中,有一个关于非连续列表的部分,但是没有关于参数的信息< 0.效果很明显,但你怎么解释呢?

示例用法:

>>> foo = [1, 2, 3]
>>> foo[::-1]
[3, 2, 1]

3 个答案:

答案 0 :(得分:8)

语法如下:

foo[start:end:step] # begin with 'start' and proceed by step until you reach 'end'.

因此foo[::-1]表示entire list with step=-1,因此实际上会撤消列表。

有关详细说明,请参阅this answer

答案 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 :(得分:2)

负步骤与range(start, stop, step)中的行为相同。 关于消极步骤要记住的事情是stop始终是排除的结束,无论是更高还是更低。

'0123456789'[5:0:-1] == '54321'而非'43210'的人经常会感到惊讶。如果你想要一些子序列,只是顺序相反,单独进行反转会更加清晰。例如。从左边切掉一个字符,从右边切两个,然后反转:'0123456789'[1:-2][::-1] == '7654321' s。如果您不需要副本,只想循环,使用reversed()更具可读性:

for char in reversed('0123456789'[1:-2]):
    ...