通过循环增大字符串大小
有没有简单的方法可以把一个字符串的长度增加到任意的整数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