使用重复的其他列表的 3 个元素的组合创建列表
Create list with combinations of 3 elements of other list with repetitions
我有一个包含一些元素的列表,我想创建一个列表,将这些项目 3 乘 3 组合起来。到目前为止,我设法做到了这一点,但我不知道如何与重复元素进行组合。到目前为止,我的代码是这个:
list_of_aa = ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"]
combinations = list(itertools.combinations(list_of_aa, 3))
但是使用此代码我缺少像 "AAA" 或 "MAA" 这样的三元组。你知道我该如何解决这个问题吗?谢谢。
你想要你的项目的笛卡尔积,所以使用itertools.product()
:
itertools.product(list_of_aa, repeat=3)
请注意,这会产生 len(list_of_aa) ** 3
(即立方体)个元素,您可能希望避免将其全部具体化为一个列表。对于您的样本输入,生成了 8000 个 3 元素元组。
从整个结果中截取切片的演示:
>>> from itertools import product, islice
>>> list_of_aa = ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"]
>>> for combo in islice(product(list_of_aa, repeat=3), 5):
... print(''.join(combo))
...
AAA
AAR
AAN
AAD
AAC
>>> for combo in islice(product(list_of_aa, repeat=3), 1000, 1005):
... print(''.join(combo))
...
NLA
NLR
NLN
NLD
NLC
>>> for combo in islice(product(list_of_aa, repeat=3), 2000, 2005):
... print(''.join(combo))
...
QAA
QAR
QAN
QAD
QAC
我有一个包含一些元素的列表,我想创建一个列表,将这些项目 3 乘 3 组合起来。到目前为止,我设法做到了这一点,但我不知道如何与重复元素进行组合。到目前为止,我的代码是这个:
list_of_aa = ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"]
combinations = list(itertools.combinations(list_of_aa, 3))
但是使用此代码我缺少像 "AAA" 或 "MAA" 这样的三元组。你知道我该如何解决这个问题吗?谢谢。
你想要你的项目的笛卡尔积,所以使用itertools.product()
:
itertools.product(list_of_aa, repeat=3)
请注意,这会产生 len(list_of_aa) ** 3
(即立方体)个元素,您可能希望避免将其全部具体化为一个列表。对于您的样本输入,生成了 8000 个 3 元素元组。
从整个结果中截取切片的演示:
>>> from itertools import product, islice
>>> list_of_aa = ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V"]
>>> for combo in islice(product(list_of_aa, repeat=3), 5):
... print(''.join(combo))
...
AAA
AAR
AAN
AAD
AAC
>>> for combo in islice(product(list_of_aa, repeat=3), 1000, 1005):
... print(''.join(combo))
...
NLA
NLR
NLN
NLD
NLC
>>> for combo in islice(product(list_of_aa, repeat=3), 2000, 2005):
... print(''.join(combo))
...
QAA
QAR
QAN
QAD
QAC