【问题标题】:Storing The Output of a Permutation as a List of Lists将排列的输出存储为列表的列表
【发布时间】:2022-11-21 22:34:43
【问题描述】:

当我运行以下代码时,我得到了多行元组:

  {perm = itertools.permutations(['A','B','C','D','E','F'],4)

   for val in perm:
        print(val)}.

如何让代码将输出作为单个列表列表而不是元组行?

当我运行代码时,我得到这样的东西 ('F', 'E', 'B', 'C') ('F', 'E', 'B', 'D') ('F', 'E', 'C', 'A') ('F', 'E', 'C', 'B')

type here

等等

我想要的是这样的

      [['F', 'E', 'B', 'C'],
       ['F', 'E', 'B', 'D'],
       ['F', 'E', 'C', 'A'],...,]

【问题讨论】:

  • 将 val 转换为列表并将其附加到另一个列表
  • pprint.pprint(list(map(list, itertools.permutations('ABCDEF',4)))) 准确给出您指定的输出。

标签: python list loops tuples permutation


【解决方案1】:

val 转换为一个列表并将其附加到另一个列表。

import itertools
perm = itertools.permutations(['A','B','C','D','E','F'],4)

result = []
for val in perm:
    result.append(list(val))

问题是,你想生成所有排列并存储它们吗?

正如你现在所拥有的,生成器每次都会给你一个排列,这是内存高效的。

您可以将它们全部生成到一个列表列表中,但如果您真的想要那样,请考虑一下,因为排列的数量可能非常大。

【讨论】:

  • 谢谢,但是当我尝试它没有给我一个列表列表时,它给了我各种列表列表,例如 [['A', 'B', 'C', 'D']] [['A' , 'B', 'C', 'D'], ['A', 'B', 'C', 'E']] [['A', 'B', 'C', 'D'] , ['A', 'B', 'C', 'E'], ['A', 'B', 'C', 'F']]
  • 如何将其存储为单个列表列表?
  • @Thando 我无法重现你在说什么。在我的电脑中,它给出了一个列表列表:一个包含 4 个元素的 360 个列表的列表。您是否按原样运行我的代码?
  • 是的,先生,我只在您代码的最后一行下方添加 print(result)
猜你喜欢
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2013-02-09
  • 2021-11-08
相关资源
最近更新 更多