如何迭代一个8个字母,我想他们迭代的长度和内容?Python

2024-05-28 23:54:57 发布

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

我试图用python编写一个拼字游戏求解器。我想迭代一个8个字母,并希望他们迭代的长度像这样?你知道吗

z="asdfghjk

(some code)

print (iterations)

(as,ad,af,ag,ah,.....sa,sadf,fgh,)

Every possible length and possible arrangement of letter from 1-8 letter long.


Tags: as字母sacodesomeadafprint
3条回答

你的例子不能很好地说明问题(拼字游戏) . 在您的示例中,假设每个字母在一组图块中都是唯一的。您还省略了单字母实例。在这一点上,“itertools”的答案已经落入了您用示例设置的陷阱。你知道吗

例如,假设您持有8个A(我不记得每个字母的最大数字是多少)。那么可能的组合是8。A、 AA。。。AAAAAAAA。你知道吗

轻松处理itertools.组合. 你知道吗

from itertools import combinations
from math import factorial as fac  # extra

z = "asdfghjk"
n = len(z)  # extra
for i in range(1, 9):
    print("{} of {}, {} combinations".
          format(i, n, fac(n) // (fac(i)*fac(n-i))))  # extra
    for combo in combinations(z, i):
        print(''.join(combo), end = ', ')
    print('\n')  # extra

标有“#extra”的行不是必需的,只是为了更好地显示而添加的。你知道吗

1 of 8, 8 combinations
a, s, d, f, g, h, j, k, 

2 of 8, 28 combinations
as, ad, af, ag, ah, aj, ak, sd, sf, sg, sh, sj, sk, df, ...

(etc)

7 of 8, 8 combinations
asdfghj, asdfghk, asdfgjk, asdfhjk, asdghjk, asfghjk, adfghjk, sdfghjk, 

8 of 8, 1 combinations
asdfghjk, 

您可以使用itertools库来实现此目标:

>>> import itertools
>>> letters = 'abc'
>>> combinations = set()
>>>
>>> for i in range(len(letters)):
...     combinations.update(
...        [''.join(x) for x in itertools.permutations(letters, i + 1)])
>>>
>>> for combination in sorted(combinations):
...     print(combination)
a
ab
abc
ac
acb
b
ba
bac
bc
bca
c
ca
cab
cb
cba

这表明对于1到3个组合,只需更新到字符数,对于所有可能的排列1到8,范围为8。你知道吗

相关问题 更多 >

    热门问题