我知道如何在python中生成所有可能的5位数字,但我想知道如何生成所有可能的5个字母数字(如1df52)。无论如何我都想不出生成所有可能的5个字母数字,有人能指点我在这里可以做什么吗?
答案 0 :(得分:3)
使用内置的itertools.product()
function。
此外,您可以使用string
模块中的常量来查找数字和字母。 :)
import itertools
import string
keyspace = string.digits + string.ascii_lowercase
# (or `itertools.product(keyspace, repeat=5)`)
for combination in itertools.product(*[keyspace] * 5):
print(''.join(combination))
输出
00000
00001
00002
00003
[...]
032ne
032nf
032ng
[...]
11xbe
11xbf
11xbg
11xbh
11xbi
[...]
itertools.product(*[keyspace] * 5)
的结构有点神秘,与itertools.product(keyspace, keyspace, keyspace, keyspace, keyspace)
的含义相同。 (我们的想法是,我们重复单项数组[keyspace]
5次以获得[keyspace, keyspace, keyspace, keyspace, keyspace]
,然后使用*
splat运算符将其解压缩为单独的参数。
编辑:
要打印出多少组合,可以使用enumerate()
:
for num, combination in enumerate(itertools.product('abc', 'def', 'gh'), 1):
print(num, ''.join(combination))
输出
1 adg
2 adh
3 aeg
4 aeh
5 afg
6 afh
7 bdg
8 bdh
9 beg
10 beh
11 bfg
12 bfh
13 cdg
14 cdh
15 ceg
16 ceh
17 cfg
18 cfh