如何生成包含a-z字符和数字的所有2个字符组合。
我相信有36 ^ 2种可能性。
谢谢
f9f8f7
答案 0 :(得分:3)
itertools.product
为您提供N次迭代的笛卡尔积,这正是您在这里寻找的。你可以这样做:
import itertools
import string
charset = string.ascii_lowercase + string.digits
# ^-- a..z ^-- 0..9
result = itertools.product(charset, charset)
或者使用方便关键字参数repeat
到product
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')]
修改您的输入字符集合以满足您的需求。