如何在python中生成字符串序列

时间:2016-10-31 18:48:00

标签: python string

我有一个字符串“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脚本

2 个答案:

答案 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的字符串。

唯一(轻微)并发症是你不要分开不同长度的字符串,但这应该很容易处理。