Itertools在python中创建Ts和Hs的组合作为字符串

2024-10-01 07:36:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用itertools创建三种抛硬币的所有可能组合,例如['HHH'、'TTT'、['hh'、'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,hh)?在

谢谢。在


Tags: in编辑forhh硬币onejoinitertools
3条回答

请尝试以下代码:

#without itertools

def tosses(N):
    L = [''] 
    for i in range(0,N):
        L=[l+'H' for l in L]+[l+'T' for l in L]
    return L

print tosses(4)

生成所有的三次投掷,然后从该列表中生成所有对。在

import itertools

toss3 = map(''.join, itertools.product('HT', repeat=3))
toss3_pairs = list(itertools.product(toss3, repeat=2))
>>> 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']

相关问题 更多 >