通过循环增大字符串大小

6 投票
4 回答
3103 浏览
提问于 2025-04-15 22:44

有没有简单的方法可以把一个字符串的长度增加到任意的整数x?比如说,从'a'变成'z',然后再变成'aa',接着是'zz',再到'aaa',依此类推。

4 个回答

0

定义一个变量x。在这个例子中,我用的是 x = 5

x = 5
import string
for n in range(1,x+1):
  for letter in string.ascii_lowercase:
    print letter*n
3

这是我的解决方案,跟Adam的差不多,不过我用的不是递归方法。:]

from itertools import product
from string import lowercase

def letter_generator(limit):
    for length in range(1, limit+1):
        for letters in product(lowercase, repeat=length):
            yield ''.join(letters)

而且它返回的是一个generator,所以你可以用for循环来遍历它:

for letters in letter_generator(5):
    # ...

玩得开心!

(今天我第二次发现itertools.product()很有用,太棒了。)

7

这样做就可以了:

def iterate_strings(n):
    if n <= 0:
        yield ''
        return
    for c in string.ascii_lowercase:
        for s in iterate_strings(n - 1):
            yield c + s

这个会返回一个生成器。你可以用一个for循环来遍历它:

for s in iterate_strings(5)

或者你可以得到一个字符串的列表:

list(iterate_strings(5))

如果你也想遍历更短的字符串,可以使用这个函数:

def iterate_strings(n):
    yield ''
    if n <= 0:
        return
    for c in string.ascii_lowercase:
        for s in iterate_strings(n - 1):
            yield c + s

撰写回答