在Python中编写多个嵌套for循环的最佳方法是什么

1 python optimization for-loop

我正在编写一个代码,我需要使用嵌套循环,如下所示:

for r in range(m):
   for s in range(r+1, m):
      for t in range(s+1, m):
         for u in range(t+1, m):
            for v in range(u+1, m):
                  arr.append([r,s,t,u,v])
Run Code Online (Sandbox Code Playgroud)

但是这个传统的嵌套循环看起来很丑陋.有没有办法用更少的线执行相同的操作?

我看了一下itertools.product但是我无法得到我想要的东西,因为我的循环的所有开始/结束索引都取决于之前的级别.

the*_*eye 5

您可以使用itertools.combinations,第二个参数是您想要执行的循环数.

from itertools import combinations
for item in combinations("ABCD", 3):
    print item
Run Code Online (Sandbox Code Playgroud)

产量

('A', 'B', 'C')
('A', 'B', 'D')
('A', 'C', 'D')
('B', 'C', 'D')
Run Code Online (Sandbox Code Playgroud)

因此,通过列表理解,整个代码就变成了这样

[list(item) for item in combinations("ABCD", 3)]
Run Code Online (Sandbox Code Playgroud)