1

itertoolsを使用して、3つのコイントスのすべての可能な組み合わせのペアを作成しようとしています。たとえば、['HHH'、'TTT']、['HHH'、'THH'] .. [TTT'、' HTH'] 、..など。個々の文字列としてペアにアクセスしたいのですが、これまでのところこれがあります。どちらが最適ではないようですか?

from itertools import *

combs = []

combs.extend([list(x) for x in combinations(product('HT', repeat = 3), 2)])

for l in combs:
    (one, two) = l
    print ''.join(one), ''.join(two)

==編集==

元の質問を編集しても大丈夫かどうかはわかりませんが、ここで説明します。

重複(たとえば、ペア(THT、THT)と逆のペア)を削除する最良の方法は何ですか?逆に重複します(たとえば、(HHH、TTT)と(TTT、HHH))?

ありがとうございました。

4

4 に答える 4

4

すべての 3 トスを生成し、そのリストからすべてのペアを生成します。

import itertools

toss3 = map(''.join, itertools.product('HT', repeat=3))
toss3_pairs = list(itertools.product(toss3, repeat=2))
于 2013-02-03T18:20:39.193 に答える
0
>>> combs.extend([''.join(y) for x in combinations(product('HT', repeat = 3), 2) for y in x])
>>> combs
['HHH', 'HHT', 'HHH', 'HTH', 'HHH', 'HTT', 'HHH', 'THH', 'HHH', 'THT', 'HHH', 'TTH', 'HHH', 'TTT', 'HHT', 'HTH', 'HHT', 'HTT', 'HHT', 'THH', 'HHT', 'THT', 'HHT', 'TTH', 'HHT', 'TTT', 'HTH', 'HTT', 'HTH', 'THH', 'HTH', 'THT', 'HTH', 'TTH', 'HTH', 'TTT', 'HTT', 'THH', 'HTT', 'THT', 'HTT', 'TTH', 'HTT', 'TTT', 'THH', 'THT', 'THH', 'TTH', 'THH', 'TTT', 'THT', 'TTH', 'THT', 'TTT', 'TTH', 'TTT']
于 2013-02-03T18:13:51.740 に答える
-1

これを試して:

import itertools

combs = []

combs.extend([y for y in itertools.combinations([''.join(x) for x in itertools.product('HT', repeat = 3)], 2)])

print combs

出力:

[('HHH', 'HHT'), ('HHH', 'HTH'), ('HHH', 'HTT'), ('HHH', 'THH'), ('HHH', 'THT'), ('HHH', 'TTH'), ('HHH', 'TTT'), ('HHT', 'HTH'), ('HHT', 'HTT'), ('HHT', 'THH'), ('HHT', 'THT'), ('HHT', 'TTH'), ('HHT', 'TTT'), ('HTH', 'HTT'), ('HTH', 'THH'), ('HTH', 'THT'), ('HTH', 'TTH'), ('HTH', 'TTT'), ('HTT', 'THH'), ('HTT', 'THT'), ('HTT', 'TTH'), ('HTT', 'TTT'), ('THH', 'THT'), ('THH', 'TTH'), ('THH', 'TTT'), ('THT', 'TTH'), ('THT', 'TTT'), ('TTH', 'TTT')]
>>> 
于 2013-02-03T18:13:58.550 に答える