Python 暴力破解(所有可能的组合)

Python Bruteforce (all possible combinations)

我想从 a-zA-Z0-9 和我的最大字符串长度生成所有可能的组合。

所以,例如,如果我将最大长度设置为 25,那么我想要的输出是

a
...
z
aa
...
a1
...
zzzzzzzzzzzzzzzzzzzzzzzzz

因此,生成所有可能的组合并将每个组合打印到控制台 我是 python 的新手,所以我不知道如何实现这一点...

运行 将花费近乎永恒的时间,例如max_length=25(可能的组合数量是天文数字),但我认为这应该做你想要的(最终):

from itertools import combinations_with_replacement

characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

max_length = 4

for r in range(1, max_length+1):
    for combo in combinations_with_replacement(characters, r=r):
        print(''.join(combination))                             

与 akensert 的答案相同的概念,但更具可读性:

from itertools import combinations_with_replacement
from string import ascii_letters

max_length = 4

for r in range(1, max_length+1):
    for combo in combinations_with_replacement(ascii_letters, r=r):
        print(''.join(combination))   

作为一个公平的警告,组合的数量绝对是巨大的。刚好25个字符组合的个数是:

样本量:26+26+10 = 62

所有可能的替换组合:62^n,所以 62^25=6.25x10^44。即使您将循环时间降低到 1 纳秒,您仍然需要 10^35 秒,即 10^27 年。这只是最大的一组,忽略所有 IO,并假设计算机永远不会出现故障。

如果您希望您的程序在宇宙终结之前 运行 完成,您可能需要考虑重新考虑您的方法。