python - 长列表的排列会破坏记忆
问题描述
#!/usr/bin/python
import itertools
list1 = ['XTN','XES','XSD','XRT','XLI','XME','XLE','XLF','XAR','XLB','XHE','XLK','XLY','XHB','XBI','XLP','XLV','XPH','XLU']
perm = list(itertools.permutations(list1))
print(perm)
嗨,上面的代码在一个大小合适的实例或工作站上被“杀死”,它的运行时间无论如何都是不可接受的。
我的问题是,对于给定的列表,我想改变安排,但要产生所有,例如,“A”、“B”、“C”
A
B
C
AB
AC
BC
等等 - 任何人都有可以为任意列表执行此操作且不会压扁机器的代码?
解决方案
itertools.permutations()
返回一个生成器,因此您可以...不将其转换为列表。
list1 = ['XTN','XES','XSD','XRT','XLI',...]
permutations = itertools.permutations(list1)
for permutation in permutations:
print(permutation)
推荐阅读
- javascript - TypeError:无法在 Class.run 中读取属性“config”的 null ~/node_modules/angular-cli/tasks/serve.js:22:61
- html - 在 MeteorJS / Blaze 上创建动态标签的更有效方法是什么?
- ansible - 从 ansible 生成手动安装指南
- angular - 为什么测试断言到订阅通过而不在异步区域中?
- jenkins - 本地文件系统上的詹金斯提交触发器
- .net-core - 在 .Net Core 项目上运行 NUnit 测试的方式是什么,它指的是 .NetStandard 项目,包括那些测试?
- bash - Gitlab管道:脚本中的错误替换错误
- html - 位置粘性似乎不适用于 chrome 版本 72.x?
- sql - 为什么我的 CREATE TABLES 单独工作而不是一起工作?
- swift - 加载自定义 CollectionViewCell Nib 时出现 initWithCoder 错误