计算给定字符到给定长度的所有可能组合
Calculate all possible combinations of given characters to a given length
我正在尝试编写一个程序来计算给定字符的所有可能组合 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890
... 但仅针对 8 个点,例如 AAAAAAAA
、AAAAAAAa
、 AAAAAAaa
...
像这样的开始:
for i in xrange(999999999):
print ''.join(['ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'[j]
for j in [(i//d)%36 for d in (63,54,45,36,27,9,3,1)]])
mystring = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
from itertools import product
combos = [''.join(i) for i in product(mystring, repeat = 8)]
type(combos)
Returns 组合列表。
这可能需要一段时间才能 运行 因为有很多可能的排列。所以事先知道这一点。我的解决方案:
from itertools import permutations
options = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
possibilities = [w for w in permutations(options, 8)]
这将生成存储在可能性变量中的所有可能密码的列表。
我的小生成器算法:
def combinator(karakterler, uzunluk):
l = len(karakterler)
for i in range(l ** uzunluk):
s = ""
for j in range(uzunluk):
i, index = divmod(i,l)
s += karakterler[index]
yield s
for i in combinator("abc",3): print(i)
我正在尝试编写一个程序来计算给定字符的所有可能组合 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890
... 但仅针对 8 个点,例如 AAAAAAAA
、AAAAAAAa
、 AAAAAAaa
...
像这样的开始:
for i in xrange(999999999):
print ''.join(['ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'[j]
for j in [(i//d)%36 for d in (63,54,45,36,27,9,3,1)]])
mystring = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
from itertools import product
combos = [''.join(i) for i in product(mystring, repeat = 8)]
type(combos)
Returns 组合列表。
这可能需要一段时间才能 运行 因为有很多可能的排列。所以事先知道这一点。我的解决方案:
from itertools import permutations
options = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
possibilities = [w for w in permutations(options, 8)]
这将生成存储在可能性变量中的所有可能密码的列表。
我的小生成器算法:
def combinator(karakterler, uzunluk):
l = len(karakterler)
for i in range(l ** uzunluk):
s = ""
for j in range(uzunluk):
i, index = divmod(i,l)
s += karakterler[index]
yield s
for i in combinator("abc",3): print(i)