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但是我无法得到我想要的东西,因为我的循环的所有开始/结束索引都取决于之前的级别.
您可以使用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)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |