Python 如何使用itertools改进我的慢速嵌套for循环?
我针对Codewars问题编写的代码太慢了,经过一些研究后,我似乎不得不使用itertools产品,但我想不出一个解决方法 现在这是我的代码,它确实可以工作,但正如所说的那样太慢了Python 如何使用itertools改进我的慢速嵌套for循环?,python,python-3.x,loops,nested,itertools,Python,Python 3.x,Loops,Nested,Itertools,我针对Codewars问题编写的代码太慢了,经过一些研究后,我似乎不得不使用itertools产品,但我想不出一个解决方法 现在这是我的代码,它确实可以工作,但正如所说的那样太慢了 def list_squared(m, n): results = [] for i in range (m, n): sum = 0 for j in range (1, i+1): if i % j == 0: sum += j**2
def list_squared(m, n):
results = []
for i in range (m, n):
sum = 0
for j in range (1, i+1):
if i % j == 0:
sum += j**2
if int(sum**(1/2))**2 == sum: #checking if number is a perfect square number
results.append([i, sum])
return results
在这种情况下,如何使用itertools中的prodcut函数
编辑:
一些例子:
列表平方(1250)-->[1,1],[422500],[24684100]]
列表平方(42250)->[422500],[24684100]
我应该得到一份这样的清单。
考虑到我输入的两个整数m,n(1如果“sum**(1/2)”表示“sum的平方根”,它可能会被自动转换成exp((1/2)*log(sum))之类的东西,它会把你活活吃掉。早餐。无盐
模运算i%j可能没有帮助,但在狼群结束与你的关系后,肯定会有几次蚊子叮咬
在这种情况下,你必须对你的算法进行长时间、仔细的研究
从观察完美正方形集给出函数(m和n)的输入示例和预期输出my bad开始。我添加了它