import string
import itertools
chars = string.digits + string.letters
MAX_CHARS = 4
for nletters in range(MAX_CHARS):
for word in itertools.product(chars, repeat=nletters + 1):
print (''.join(word))
import string
chars = [''] + list(string.lowercase)
strings = (a+b+c+d for a in chars
for b in chars
for c in chars
for d in chars)
for string in strings:
print string
这将打印出您要查找的所有
15018570
单词。如果需要更多/更少的单词,只需更改MAX_CHARS
变量。对于任意数量的字符,它仍然只有两个for
,并且您不必重复自己的操作。而且可读性很强。在我将以最具可读性和最不可伸缩性的方式提交我的答案:)
编辑:实际上,这是不正确的,因为它将产生所有长度为<;4的字符串的副本。从
chars
数组中删除空字符串只会产生4个字符的字符串。在通常我会删除这个答案,但如果需要生成相同长度的字符串,我还是有点喜欢它。在
首先为程序员写作,其次是计算机。
如果它是清楚和明显的理解,那么它是正确的。在
如果速度很重要,而编译器却没有对其进行优化,如果你对它进行了测量,这就是问题所在,那么请考虑一种更快、更聪明的方法!在
相关问题 更多 >
编程相关推荐