如何在python中生成所有可能的5个字母数字的列表?

时间:2019-04-17 12:47:39

标签: python python-3.x

我知道如何在python中生成所有可能的5位数字,但我想知道如何生成所有可能的5个字母数字(如1df52)。无论如何我都想不出生成所有可能的5个字母数字,有人能指点我在这里可以做什么吗?

1 个答案:

答案 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