【问题标题】:Making all possible combination of python lists制作所有可能的python列表组合
【发布时间】:2021-08-09 17:33:17
【问题描述】:

我查看了几个列表组合线程,但没有一个与我打算在这里做的事情有关。

有以下列表:

traveler = ["John", "Joseph", "Mary", "Anna"]
brazil_destinations = ["Sao Paulo", "Rio de Janeiro", "Salvador", "Curitiba", "Porto Alegre", "Belo Horizonte"]
us_destinations = ["New York", "Orlando", "Miami", "Denver", "Houston", "Phoenix"]
italy_destinations = ["Rome", "Venice", "Florence"]
germany_destinations = ["Munich", "Berlin", "Bohn", "Bremen"]

我需要一个包含所有可能组合的列表(总是在每个国家/地区选择一个旅行者和一个城市)。期望的输出是:

[["John", "Sao Paulo", "New York", "Rome", "Munich"],
["John", "Sao Paulo", "New York", "Rome", "Berlin"],
["John", "Sao Paulo", "New York", "Rome", "Bohn"],
["John", "Sao Paulo", "New York", "Rome", "Bremen"],
["John", "Sao Paulo", "New York", "Venice", "Munich"],
["John", "Sao Paulo", "New York", "Venice", "Berlin"],
[...],
[...],
[...]]

注意 1:我需要灵活调整国家/地区列表的数量。在这种情况下,有 4 个国家/地区列表(巴西、美国、意大利和德国),但这可能会经常更改。

注意 2:它必须是高效的,因此具有递归函数的解决方案可能是最合适的。不幸的是,我无法编写代码。

提前非常感谢!

【问题讨论】:

    标签: python list loops combinations sequence


    【解决方案1】:

    你可以使用itertools.product:

    from itertools import product
    
    traveler = ["John", "Joseph", "Mary", "Anna"]
    brazil_destinations = [
        "Sao Paulo",
        "Rio de Janeiro",
        "Salvador",
        "Curitiba",
        "Porto Alegre",
        "Belo Horizonte",
    ]
    us_destinations = [
        "New York",
        "Orlando",
        "Miami",
        "Denver",
        "Houston",
        "Phoenix",
    ]
    italy_destinations = ["Rome", "Venice", "Florence"]
    germany_destinations = ["Munich", "Berlin", "Bohn", "Bremen"]
    
    out = []
    for c in product(
        traveler,
        brazil_destinations,
        us_destinations,
        italy_destinations,
        germany_destinations,
    ):
        out.append(list(c))
    
    print(*out, sep="\n")
    

    打印:

    ['John', 'Sao Paulo', 'New York', 'Rome', 'Munich']
    ['John', 'Sao Paulo', 'New York', 'Rome', 'Berlin']
    ['John', 'Sao Paulo', 'New York', 'Rome', 'Bohn']
    ['John', 'Sao Paulo', 'New York', 'Rome', 'Bremen']
    ['John', 'Sao Paulo', 'New York', 'Venice', 'Munich']
    
    ...
    
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2011-12-09
      相关资源
      最近更新 更多