【问题标题】:permutations of a long list breaks memory长列表的排列会破坏记忆
【发布时间】:2021-06-02 14:22:04
【问题描述】:
#!/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)

您好,上面的代码在一个大小合适的实例或工作站上得到了“Killed”,而且它的运行时间无论如何都是不可接受的。

我的问题是,对于给定的列表,我想置换排列但产生所有,例如,“A”、“B”、“C”

A
B
C
AB
AC
BC

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

【问题讨论】:

  • 你期待什么?你有 19 个元素,所以 19 个! ~= 10^17 排列。地球上没有计算机会保存或打印它们。
  • 格式化代码块可以提高问题的可读性。

标签: python list combinations permutation


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2021-10-13
    • 2011-05-05
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多