拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何从python元组串列中获取所有可能的组合

如何从python元组串列中获取所有可能的组合

白鹭 - 2022-01-24 2102 0 0

我有一个这样的清单..

[
    [
        ("a", 1)
    ] ,
    [
        ("b", 2)
    ],
    [
        ("c", 3),
        ("d", 4)
    ],
    [
        ("e", 5),
        ("f", 6),
        ("g", 7)
    ]
    
]

我正在尝试从此串列资料中获取所有可能的组合。

我的预期输出应如下所示。

[
    [
        ("a", 1),
        ("b", 2),
        ("c", 3),
        ("e", 5)
    ],
        [
        ("a", 1),
        ("b", 2),
        ("c", 3),
        ("f", 6)
    ],
    [
        ("a", 1),
        ("b", 2),
        ("c", 3),
        ("g", 7)
    ],
    [
        ("a", 1),
        ("b", 2),
        ("d", 4),
        ("e", 5)
    ],
    [
        ("a", 1),
        ("b", 2),
        ("d", 4),
        ("f", 6)
    ],
    [
        ("a", 1),
        ("b", 2),
        ("d", 4),
        ("g", 7)
    ],
]

我尝试使用 itertools.combinations 但无法获得预期的输出,不确定我缺少什么,找不到逻辑,请提供帮助。提前致谢。

如果您需要任何其他信息,请告诉我,

提前致谢,

uj5u.com热心网友回复:

你想要itertools.product,没有itertools.combinations每个元组串列都应该是 的一个自变量product,因此请使用*运算子将起始串列的每个元素作为自变量传递:

>>> import itertools
>>> list(itertools.product(*lists_of_tuples))
[(('a', 1), ('b', 2), ('c', 3), ('e', 5)), (('a', 1), ('b', 2), ('c', 3), ('f', 6)), (('a', 1), ('b', 2), ('c', 3), ('g', 7)), (('a', 1), ('b', 2), ('d', 4), ('e', 5)), (('a', 1), ('b', 2), ('d', 4), ('f', 6)), (('a', 1), ('b', 2), ('d', 4), ('g', 7))]

uj5u.com热心网友回复:

如果您真的想使用组合并获得显示的输出格式,您可以执行类似的操作

from itertools import combinations

input_list = [
    [("a", 1)],
    [("b", 2)],
    [("c", 3), ("d", 4)],
    [("e", 5), ("f", 6), ("g", 7)],
]

list_for_combos = [i[n] for i in input_list for n, _ in enumerate(i)]

combos = list(
    [combo[n] for n, _ in enumerate(combo)]
    for combo in combinations(list_for_combos, 4)
)

uj5u.com热心网友回复:

我认为 itertools.products()
应该可以作业,因为您希望将结果作为 2d 串列,这应该可以正常作业。

[list(x) for x in itertools.product(*li)]  # li is your list
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *