例如,假设我有以下代码:
a = [[1],[2],[3]]
for c in a:
print(c)
for d in a:
print(d)
它的当前输出是:
[1]
[1]
[2]
[3]
[2]
[1]
[2]
[3]
[3]
[1]
[2]
[3]
我的问题是,是否可以以一种漂亮的方式修改此代码,以便输出如下:
[1]
[2]
[3]
[2]
[3]
[3]
换句话说,如果有可能,在'干净的python'中,让内循环覆盖索引的列表,外循环停止。
答案 0 :(得分:2)
我使用range
并迭代索引:
a = [[1],[2],[3]]
for c in range(len(a)):
for d in range(c, len(a)):
print(a[d])
答案 1 :(得分:1)
您可以使用enumerate
并列出切片语法(items[start:end:step]
,其中start
默认为0,end
为items.length
,step
1)完成这个:
items = [[1], [2], [3]]
for i, _ in enumerate(items):
for item in items[i:]:
print(item)
另一个有趣的(虽然效率较低)选项是将itertools.accumulate
与sum
结合使用:
from itertools import accumulate
items = [[1], [2], [3]]
for item in sum(accumulate(([x] for x in items[::-1])), [])[::-1]:
print(item)
答案 2 :(得分:0)
您可以根据需要使用id
分支浅层副本:
list_iterator