为什么使用切片法将列表反转时,0作为“停止”不返回整个列表?
在下面这个例子中:
foo = ['red', 'white', 'blue', 1, 2, 3]
foo[0:6:1]
会打印出 foo
中的所有元素。不过,foo[6:0:i-1]
会漏掉第一个或第零个元素。
>>> foo[6:0:-1]
[3, 2, 1, 'blue', 'white']
我明白我可以用 foo.reverse()
或 foo[::-1]
来反向打印列表,但为什么 foo[6:0:-1]
不会打印出整个列表呢?
9 个回答
10
这个回答可能有点过时,但对遇到同样问题的人来说可能会有帮助。你可以通过一种方法来反转列表,指定一个任意的结束位置——可以到0这个索引。你可以使用第二个就地切片,像这样:
>>> L = list(range(10))
>>> L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> (start_ex, end) = (7, 0)
>>> L[end:start_ex][::-1]
[6, 5, 4, 3, 2, 1, 0]
14
191
切片表示法简单来说就是这样:
[ <first element to include> : <first element to exclude> : <step> ]
如果你在反转一个列表的时候想要包含第一个元素,可以把中间的部分留空,像这样:
foo[::-1]
你还可以在这里找到一些关于Python切片的好信息:
解释Python的切片表示法