在九个位置的列表中找到三个字母的所有组合
Find all combinations of three letters in a list of nine positions
我有一个列表:
['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 做,但如果有其他语言的解决方案,它也可以。
与替换的组合可以得到它:
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.product
加上 repeat
参数可以给它:
from itertools import product
list_ = ["A", "B", "C"]
for comb in product(list_, repeat=9):
print(comb)
3**9 = 19683
它生产的物品。
我有一个列表:
['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 做,但如果有其他语言的解决方案,它也可以。
与替换的组合可以得到它:
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.product
加上 repeat
参数可以给它:
from itertools import product
list_ = ["A", "B", "C"]
for comb in product(list_, repeat=9):
print(comb)
3**9 = 19683
它生产的物品。