python - 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
'''
解决方案
通过两次遍历列表,您必须附加到该 return_list 13122*13122=172186884 次。这将需要很长时间,如果这确实是您想要做的(将占用大量内存),那么有更好、更高效的方法来计算该列表。
list(itertools.combinations(single, 2))
推荐阅读
- python - 如何用python在neo4j中有效地构建依赖图?
- python - 如何使用 python 创建包含车辆计数的起点-终点 (OD) 矩阵
- c# - 在 C# 中,如何在运行时设置、重置或定义 JsonProperty 属性?
- python - mypy 错误:找不到模块的实现或库存根
- winapi - HGDIOBJ objectHandle[1]中的objectHandle怎么可以是变长数组?
- android - 如何调整相对布局 videoView 的屏幕尺寸
- sql - SQL DELETE FROM 几个表
- go - 如何在 Struct 中声明类似空 Object/Struct 的东西?
- javascript - 地球观测图块优化
- flutter - 如何使用预先填充的本地数据库设置 dart objectbox?