【问题标题】:How to make a list of all possible permutations? [duplicate]如何列出所有可能的排列? [复制]
【发布时间】:2021-05-30 19:06:02
【问题描述】:

是否有一个函数可以生成列表列表的所有排列,同时保持它们的顺序?

例如:

func([[1, 2, 3], [10, 20, 30]])

产生:

[[1, 10], [1, 20], [1, 30], [2, 10], [2, 20], [2, 30], [3, 10], [3, 20], [3, 30]]

【问题讨论】:

  • 到目前为止,当您搜索这样的功能时,您发现了什么?你已经看过 Python 标准库中的 itertools 模块了吗?
  • 顺便说一下,您作为示例显示的内容称为“笛卡尔积”,而不是“排列”。
  • 你在找itertools.product,而不是permutations

标签: python list permutation


【解决方案1】:

在 itertools 模块中有一个 product 函数可以做到这一点:

from itertools import product

lst = [[1, 2, 3], [10, 20, 30]]
res = [list(i) for i in product(*lst)]
print(res)

因为你希望里面的项目也是列表,所以我使用list(i)product给出的元组转换为列表。

输出:

[[1, 10], [1, 20], [1, 30], [2, 10], [2, 20], [2, 30], [3, 10], [3, 20], [3, 30]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2018-05-21
    • 2017-11-26
    • 1970-01-01
    相关资源
    最近更新 更多