通过循环增加字符串大小

时间:2010-05-14 23:31:16

标签: python string

将字符串长度增加到任意整数x的简单方法是什么?比如'a'进入'z'然后进入'aa'到'zz'到'aaa'等等。

4 个答案:

答案 0 :(得分:6)

应该这样做:

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

答案 1 :(得分:2)

这是我的解决方案,类似于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()有用.Woot。)

答案 2 :(得分:0)

您可以将整数字符串相乘。 例如

>>> 'a' * 2
'aa'
>>> 'a' * 4
'aaaa'
>>> 'z' * 3
'zzz'
>>> 'az' * 3
'azazaz'

答案 3 :(得分:0)

定义x。我在这个例子中使用x = 5

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