所有2个字符a-z& 0-9组合 - python

时间:2017-09-29 20:05:00

标签: python

如何生成包含a-z字符和数字的所有2个字符组合。

我相信有36 ^ 2种可能性。

谢谢

基于Rhosu答案的解决方案:

f9f8f7

4 个答案:

答案 0 :(得分:3)

itertools.product为您提供N次迭代的笛卡尔积,这正是您在这里寻找的。你可以这样做:

import itertools
import string

charset = string.ascii_lowercase + string.digits
#          ^-- a..z                 ^-- 0..9
result = itertools.product(charset, charset)

或者使用方便关键字参数repeatproduct

result = itertools.product(charset, repeat=2)

result现在是一个生成结果集的itertools.product生成器对象。如果您绝对需要将其作为文字列表,则可以将其转换为列表进行转换。

result_list = list(result)

但除非你不止一次地超过这一套,否则它不太可能是必要的。

答案 1 :(得分:1)

尝试

import string

alphanum = string.ascii_lowercase + string.digits

combs = [val1+val2 for val1 in alphanum for val2 in alphanum]

这应该使用所有字母和数字给出所有可能的36 ^ 2两个字符串的列表。

编辑:修改为使用string.digits

答案 2 :(得分:-1)

这是一个没有任何导入的解决方案(可能不是理想的解决方案),

alphabets = [chr(i) for i in range(ord('a'),ord('z')+1)]
numbers = [chr(i) for i in range(ord('0'),ord('9')+1)]

all_chars = alphabets + numbers
combinations = [first + second for first in all_chars for second in all_chars]

print(combinations)

答案 3 :(得分:-2)

itertools库提供了几个工具来实现这一目标...如果你真的想要组合......试试这个......

一次从字符串abcdef123中选择两个字符。

In [29]: from itertools import combinations

In [30]: list(combinations('abcdef123', 2))
[('a', 'b'),
 ('a', 'c'),
 ('a', 'd'),
 ('a', 'e'),
 ('a', 'f'),
 ('a', '1'),
 ('a', '2'),
 ('a', '3'),
 ('b', 'c'),
     ...
 ('f', '1'),
 ('f', '2'),
 ('f', '3'),
 ('1', '2'),
 ('1', '3'),
 ('2', '3')]

修改您的输入字符集合以满足您的需求。