提问者:小点点

Python double for循环覆盖有限可迭代无限期运行[重复]


在我下面的代码中,'single'指的是一个有限列表。 然后我需要从这个列表中获取所有可能的对; 但是,程序没有完成执行。

在使用了一些print语句之后,由于某种原因,尽管“single”具有有限数量的元素(13122;我用len()检查过),for循环一直在运行,直到一个break语句在索引过高时强制结束循环。 最初我认为这是因为我引用了两次“single”; 但是,即使当我用copy.deepcopy(single)替换'single'时,仍然会出现同样的问题,并且我的修复不再起作用。

如果有帮助的话,'single'的元素本身就是列表。

'''

for index1, i in enumerate(single):
    for index2, j in enumerate(single):
        return_list.append([i,j])
        
        if (index1 > length):
            break

'''


共1个答案

匿名用户

通过对列表进行两次迭代,您必须向return_list追加13122*13122=172186884次。 这将花费很长时间,如果您真的想要这样做(将占用大量内存),那么还有更好的,性能更好的方法来计算列表。

请看一下itertools.combinations

list(itertools.combinations(single, 2))