Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将此代码优化为一个循环或尽可能少的循环_Python_Optimization - Fatal编程技术网

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是的,我在这里走得太快了。我会编辑,以免把人们引向错误的方向。