2017-07-15 16 views
1

私は次のように、'AB'の可能な組み合わせを作るしようとしています:可能な組み合わせを作る?

[('A', 'A'), ('A', 'B'), ('B', 'A'), ('B', 'B')]. 

すぎ('A','A')('B','B')の両方を持っている手順であるもの、[('A', 'B'), ('B', 'A')]

を私はitertools.permutationsを使用していますが、そのだけで返します。

また、私は入力'AB'と話しています。入力が'AB''BA'の組み合わせで、出力が[('AB','AB'), ('AB, 'BA'), ('BA', 'BA'), ('BA','BA'])となるようにする必要がある場合の手順は何でしょうか。

また、私は注文について心配しません。

答えて

2

あなたが探しているitertoolsのツールはproductです。

>>> list(itertools.product('AB', repeat=2)) 
[('A', 'A'), ('A', 'B'), ('B', 'A'), ('B', 'B')] 

これは(repeatキーワードによって指定された)長さ2である指定された要素の全ての可能な配置を与えます。 permutationscombinationsexplicitly stateは、要素を繰り返さないことを示します。 関数itertools.combinations_with_replacementはあなたが望むものに近く、繰り返された要素を許しますが、すべての順列ではなく、明確な組み合わせのみを与えます。機能itertools.permutations_with_replacementは存在しません。これはまさにitertools.productがあなたに与えるものです。別にニールソンが追加何を、あなたもitertoolsを使用せずに必要な結果を得ることができるから

+0

種類のガイダンスについては、K. Nielsonに感謝します。 itertools.productが入力 'AB'のために正常に機能しました – engqureshi

1

x = 'AB' 
l = [(a, b) for a in x for b in x] 

これは、所望の出力を生成します。

+0

ありがとうPawanのヘルプ。はい、それはitertoolsと同じように動作します。 – engqureshi

関連する問題