考虑以下代码:
>>> a = [0, 1, 2]
>>> for i in range(len(a)):
>>> print a[0:i]
[]
[0]
[0, 1]
但是,当我翻转代码以从列表的另一端获取切片时,它不再起作用:
>>> for i in range(len(a)):
>>> print a[-i:]
[0, 1, 2]
[2]
[1, 2]
使第二段代码工作的唯一方法似乎是反转列表,按照第一种方式进行,然后在打印之前反转每一段。有一个更好的方法吗?我有时会使用这种类型的循环,我希望我的代码尽可能干净。
编辑:在两个循环中,我从左到右迭代。如果我也为第二个循环翻转迭代方向,它就可以工作。如果我翻转第一个循环的迭代方向,它也有与第二个循环相同的打嗝:
>>> for i in range(len(a)):
>>> print a[i-1::-1]
[2, 1, 0]
[0]
[1, 0]