首页 > 解决方案 > Python double for 循环有限迭代无限期运行

问题描述

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

在弄乱了一些打印语句之后,由于某种原因,尽管“单个”具有有限数量的元素(13122;我检查了 len()),但 for 循环一直在运行,直到我有一个 break 语句强制结束当索引太高时循环。最初我认为这是因为我两次引用了“单”;然而,即使我用 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

'''

标签: python

解决方案


通过两次遍历列表,您必须附加到该 return_list 13122*13122=172186884 次。这将需要很长时间,如果这确实是您想要做的(将占用大量内存),那么有更好、更高效的方法来计算该列表。

看看itertools.combinations

list(itertools.combinations(single, 2))

推荐阅读