首页 > 解决方案 > 长列表的排列会破坏记忆

问题描述

#!/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

等等 - 任何人都有可以为任意列表执行此操作且不会压扁机器的代码?

标签: pythonlistcombinationspermutation

解决方案


itertools.permutations()返回一个生成器,因此您可以...不将其转换为列表。

list1 = ['XTN','XES','XSD','XRT','XLI',...]
permutations = itertools.permutations(list1)
for permutation in permutations:
  print(permutation)

推荐阅读