替换嵌套的For循环。。。或n

2024-10-06 12:26:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它循环通过一系列四个(或更少)字符的字符串。例如:

aaaa
aaab
aaac
aaad

如果能够使用嵌套的for循环实现它,那么:

^{pr2}$

这种循环嵌套是一件坏事吗?如果是的话,有什么更好的方法来完成我正在做的事情呢?在


Tags: 方法字符串脚本for字符事情aaaapr2
3条回答
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))

这将打印出您要查找的所有15018570单词。如果需要更多/更少的单词,只需更改MAX_CHARS变量。对于任意数量的字符,它仍然只有两个for,并且您不必重复自己的操作。而且可读性很强。在

我将以最具可读性和最不可伸缩性的方式提交我的答案:)

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

编辑:实际上,这是不正确的,因为它将产生所有长度为<;4的字符串的副本。从chars数组中删除空字符串只会产生4个字符的字符串。在

通常我会删除这个答案,但如果需要生成相同长度的字符串,我还是有点喜欢它。在

首先为程序员写作,其次是计算机。
如果它是清楚和明显的理解,那么它是正确的。在

如果速度很重要,而编译器却没有对其进行优化,如果你对它进行了测量,这就是问题所在,那么请考虑一种更快、更聪明的方法!在

相关问题 更多 >