是否有可能让python内部'for'继续在外部停止?

时间:2017-04-18 01:52:20

标签: python python-3.x for-loop

例如,假设我有以下代码:

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'中,让内循环覆盖索引的列表,外循环停止。

3 个答案:

答案 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,enditems.lengthstep 1)完成这个:

items = [[1], [2], [3]]
for i, _ in enumerate(items):
    for item in items[i:]:
        print(item)

另一个有趣的(虽然效率较低)选项是将itertools.accumulatesum结合使用:

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