Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用python内部版本';对于';要在外部停止的位置继续?_Python_Python 3.x_For Loop - Fatal编程技术网

是否可以使用python内部版本';对于';要在外部停止的位置继续?

是否可以使用python内部版本';对于';要在外部停止的位置继续?,python,python-3.x,for-loop,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”中,让内部循环从索引覆盖列表,外部

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

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”中,让内部循环从索引覆盖列表,外部循环就停止了。

您可以使用和列表切片语法(
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)
另一个有趣(尽管效率较低)的选择是与
sum
结合使用:

from itertools import accumulate

items = [[1], [2], [3]]
for item in sum(accumulate(([x] for x in items[::-1])), [])[::-1]:
     print(item)
您可以使用并列出切片语法(
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)
另一个有趣(尽管效率较低)的选择是与
sum
结合使用:

from itertools import accumulate

items = [[1], [2], [3]]
for item in sum(accumulate(([x] for x in items[::-1])), [])[::-1]:
     print(item)

我会使用
范围
并迭代索引:

a = [[1],[2],[3]]
for c in range(len(a)): 
    for d in range(c, len(a)): 
        print(a[d])

我会使用
范围
并迭代索引:

a = [[1],[2],[3]]
for c in range(len(a)): 
    for d in range(c, len(a)): 
        print(a[d])

您可以使用
列表迭代器
并根据需要分支浅拷贝:

import copy
ia = iter(a)
for ai in ia:
    print(ai)
    for ai in copy.copy(ia):
        print(ai)

# [1]
# [2]
# [3]
# [2]
# [3]
# [3]

您可以使用
列表迭代器
并根据需要分支浅拷贝:

import copy
ia = iter(a)
for ai in ia:
    print(ai)
    for ai in copy.copy(ia):
        print(ai)

# [1]
# [2]
# [3]
# [2]
# [3]
# [3]