将字符串长度增加到任意整数x的简单方法是什么?比如'a'进入'z'然后进入'aa'到'zz'到'aaa'等等。
答案 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