Python 如何将此代码优化为一个循环或尽可能少的循环
我需要将此代码限制为最多一个循环或更少(如果可能):Python 如何将此代码优化为一个循环或尽可能少的循环,python,optimization,Python,Optimization,我需要将此代码限制为最多一个循环或更少(如果可能): for i in range(1,count+1): for j in range(i+1,count+1): newcount+=1 基本上,它所做的是找到可能的组合而不重复。它看起来像是介于1和count-1之间: count * (count - 1) // 2 下面是一个小测试: count = 10 newcount = 0 for i in range(1,count+1): for j in rang
for i in range(1,count+1):
for j in range(i+1,count+1):
newcount+=1
基本上,它所做的是找到可能的组合而不重复。它看起来像是介于1
和count-1
之间:
count * (count - 1) // 2
下面是一个小测试:
count = 10
newcount = 0
for i in range(1,count+1):
for j in range(i+1,count+1):
newcount+=1
print(newcount)
# 45
print(newcount == count * (count - 1) // 2)
# True
它看起来像一个介于1
和count-1
之间的值:
count * (count - 1) // 2
下面是一个小测试:
count = 10
newcount = 0
for i in range(1,count+1):
for j in range(i+1,count+1):
newcount+=1
print(newcount)
# 45
print(newcount == count * (count - 1) // 2)
# True
我推荐
在您的情况下,您可以迭代itertools.compositions(xrange(1,count+1),2)
我建议
在您的情况下,您可以迭代
itertools.compositions(xrange(1,count+1),2)
newcount+=(count-1)*count/2
您不能使用itertools.compositions
?@spoonmiser:如果根本不使用i,j
,那就太过分了。@EricDuminil是的。同意。newcount+=(count-1)*count/2您不能使用itertools。组合?@spoonmiser:如果根本不使用i,j
,那就太过分了。@EricDuminil是的。“同意。”埃里克·杜米尼:好的,我在这里开得太快了。我会编辑,以免把人们引向错误的方向。@EricDuminil是的,我在这里走得太快了。我会编辑,以免把人们引向错误的方向。