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,并假设计算机永远不会出现故障。
如果您希望您的程序在宇宙终结之前 运行 完成,您可能需要考虑重新考虑您的方法。
我想从 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,并假设计算机永远不会出现故障。
如果您希望您的程序在宇宙终结之前 运行 完成,您可能需要考虑重新考虑您的方法。