是否有更快的方法(可能使用itertools
)来实现下面的代码?
for i in range(0,10):
for j in range(0,i+1):
do stuff
do stuff
感谢。
答案 0 :(得分:4)
您正在使用替换生成组合,因此itertools.combinations_with_replacement()
可以为您生成这些组合,尽管j
和i
已被撤消:
from itertools import combinations_with_replacement
for j, i in combinations_with_replacement(range(10), 2):
# ...
请注意j
和i
的反转;这会产生与嵌套循环相同的值对,只是顺序不同:
>>> sorted(combinations_with_replacement(range(10), 2)) == sorted((j, i) for i in range(10) for j in range(i + 1))
True