【问题标题】:Find all combinations of three letters in a list of nine positions在九个位置的列表中查找三个字母的所有组合
【发布时间】:2021-04-28 16:09:48
【问题描述】:

我有一个类似的列表:

['A','B','C']

我想要得到的是这三个字母在一个九长列表中的所有组合,它可以是重复的字母。

例如:

combination_1 = ['A','A','A','A','A','A','A','A','A']
combination_2 = ['A','A','A','A','C','A','A','A','A']
combination_3 = ['B','B','B','A','C','A','A','C','C']

我想用 python 做,但如果有其他语言的解决方案,它也可以。

【问题讨论】:

    标签: python combinations itertools


    【解决方案1】:

    与替换组合可以给它:

    from itertools import combinations_with_replacement
    
    list_ = ["A", "B", "C"]
    for comb in combinations_with_replacement(list_, 9):
        print(comb)
    

    打印

    ('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A')
    ('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B')
    ('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'C')
    ('A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B')
    ('A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'C')
    ('A', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'C')
    ('A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B')
    ('A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'C')
    ('A', 'A', 'A', 'A', 'A', 'A', 'B', 'C', 'C')
    ('A', 'A', 'A', 'A', 'A', 'A', 'C', 'C', 'C')
    ('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B')
    ('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C')
    ('A', 'A', 'A', 'A', 'A', 'B', 'B', 'C', 'C')
    ('A', 'A', 'A', 'A', 'A', 'B', 'C', 'C', 'C')
    ('A', 'A', 'A', 'A', 'A', 'C', 'C', 'C', 'C')
    ('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B')
    ('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C')
    ('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C')
    ('A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C')
    ('A', 'A', 'A', 'A', 'B', 'C', 'C', 'C', 'C')
    ('A', 'A', 'A', 'A', 'C', 'C', 'C', 'C', 'C')
    ('A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B')
    ('A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C')
    ....
    

    还有更多:)(总共 55 个)。

    如果你想列出输出,你可以在上面的循环中print(list(comb))

    (评论更正后)

    itertools.productrepeat 参数可以给它:

    from itertools import product
    
    list_ = ["A", "B", "C"]
    for comb in product(list_, repeat=9):
        print(comb)
    

    3**9 = 19683 它产生的物品。

    【讨论】:

    • 我正在写一个基本的组合函数,但是哦,太好了
    • @IşıkKaplan 谢谢他们已经为我们写好了 :)
    • @FehmiElicebinde 我正在检查答案,它给了我 55 种组合,我认为还有更多组合,例如列表 =[A,B,C,A,B,C,A, B,C] 不在里面等等。你知道怎么解决吗?谢谢!!
    • @MarioArango 那么你需要itertools.product。我正在编辑答案,希望它能解决它。有19683个结果!抱歉第一个错误的“解决方案”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2013-01-19
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多