是否可以使用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]