gpt4 book ai didi

python - python中嵌套列表的可能组合

转载 作者:行者123 更新时间:2023-11-28 22:24:30 26 4
gpt4 key购买 nike

如果我有一个列表列表并想从每个不同的索引中找到所有可能的组合,我该怎么做?

例如:

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我要找

all_possibility = [[1, 5, 9], [1, 8, 6], [4, 2, 9], [4, 8, 3], [7, 2, 6], [7, 5, 3]]

在哪里

  • [1,5,9]:1 是 [1, 2, 3] 的第一个元素,5 是 [4, 5, 6] 的第二个元素,9 是 [7, 8, 9].

  • [1,8,6]:1 是 [1, 2, 3] 的第一个元素,8 是 [7, 8, 9] 的第二个元素,6 是 [4, 5, 6].

等等。

(已编辑)注意:我希望结果与列表的原始元素的顺序相同。 [1, 8, 6] 而不是 [1, 6, 8] 因为 8 是 [7, 8, 9] 的第二个元素。

最佳答案

你要找的是笛卡尔积,在 Python itertools.product 中:

>>> import itertools
>>> list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> all_possibility = list(itertools.product(*list_of_lists))
>>> print(all_possibility)
[(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 6, 7), (1, 6, 8),
(1, 6, 9), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 6, 7),
(2, 6, 8), (2, 6, 9), (3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 5, 7), (3, 5, 8), (3, 5, 9),
(3, 6, 7), (3, 6, 8), (3, 6, 9)]

如果你想要基于索引而不是值的排列,你可以使用 itertools.combinations 来获取可能的索引,然后使用这些索引从子列表中获取相应的值,像这样:

>>> list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> length = 3
>>> all_indices = list(itertools.permutations(range(length), length))
>>> all_possibility = [[l[i] for l,i in zip(list_of_lists, indices)] for indices in all_indices]
>>> print(all_possibility)
[[1, 5, 9], [1, 6, 8], [2, 4, 9], [2, 6, 7], [3, 4, 8], [3, 5, 7]]

关于python - python中嵌套列表的可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46331714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com