我有一个字符串“0123456789abcdefghijklmnopqrstuvwxyz”
我想从它生成一个字符串序列,从长度1到5开始,例如:
0
1
2
...
x
y
z
00
01
02
...
zx
zy
zz
000
001
002
...
zzx
zzy
zzz
直到5个字符串长度,结尾将是zzzzz
我当前的代码只会附加到字符的初始列表,这只会创建2个字符串
#!/usr/bin/env python
data=list("0123456789abcdefghijklmnopqrstuvwxyz")
def addtostring(mystring):
for y in data:
output.append(mystring+y)
output=[]
for x in data:
addtostring(x)
print output
我必须手动设置初始字符,然后附加结束字符
需要帮助来创建一个生成列表的python脚本
答案 0 :(得分:3)
您可以使用Python的默认包 itertools.product 来实现此目的。
import itertools
chars = "0123456789abcdefghijklmnopqrstuvwxyz"
n = 2
for i in xrange(1, n+1):
for item in itertools.product(chars, repeat=i):
print "".join(item)
n
是最大字符数。
输出将如下所示。
0
1
2
...
y
z
00
01
02
...
答案 1 :(得分:0)
如果给出一个包含所有长度为n-1个字符串的列表,你有一个程序可以创建所有长度为n的字符串。
您目前使用它从长度为1的字符串(data
)列表中生成所有长度为2的字符串。
所以你只需要使它成为一个函数,并为你需要的每个剩余长度调用它,按顺序传递长度为1的字符串。
唯一(轻微)并发症是你不要分开不同长度的字符串,但这应该很容易处理。