2016-05-11 10 views
1

私はいくつかの要素のリストを持っています。この項目を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"のような三つ組がありません。どのようにしてこの問題を解決することができますか?ありがとうございました。

答えて

1

あなたの項目の直積を持つようにしたいので、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 
+0

。あなたが私の次のステップで私を助けることができるかどうかはわかりませんが、今は単一の文字列で作成されたタプルに参加したいと思います。コードは最初のタプルにのみ行い、他のものはスキップします。私がこれまで持っていたのは: 'combined_aa = [] \t combination_aa.append(( '') ')')twitter()))' Anyどのように私はこの問題を克服することができますアイデア?前もって感謝します。 –

+0

これは非常に冗長な方法のようです。 'combined_aa = [''。(トリプレット).trip()を組み合わせて三つ組にする]'は同じことをします。 –

+0

'.strip()'コールがまったく必要ないわけではありません。入力にスペースはありません。 –

関連する問題