如何循环生成字符串顺序?

时间:2018-01-04 16:50:11

标签: python string loops automation

我正在尝试创建一个循环,我可以使用循环生成字符串。我想要实现的是,我想创建一个从1个字符到最多5个字符的小字符串集合。

所以,从sting 1开始,我想转到55555,但这是数字,所以如果我只是添加它们似乎很容易,但是当涉及到字母数字时,它会变得棘手。

这是解释,

我将字母数字字符集合作为字符串s = "123ABC",我想要做的是我想要创建所有可能的1个字符串,所以我将1,{ {1}},23AB之后我想再添加一个字符串长度的数字,这样我就可以{{1} },C11等等,直到我得到所有可能的组合,直至1213CA,我想得到它最高为CB。我在循环中感到困惑,因为我可以让它产生一个临时刺痛,但循环内部旋转字符是棘手的,

这是我到目前为止所做的,

CC

任何人都可以向我解释或指向我可以找到解决方案的资源吗?

2 个答案:

答案 0 :(得分:2)

您可能想要使用itertools.permutations功能:

import itertools

chars = '123ABC'
for i in xrange(1, len(chars)+1):
    print list(itertools.permutations(chars, i))

编辑: 要获取字符串列表,请尝试以下操作:

import itertools

chars = '123ABC'
strings = []
for i in xrange(1, len(chars)+1):
    strings.extend(''.join(x) for x in itertools.permutations(chars, i))

答案 1 :(得分:1)

这是一个嵌套循环。不同的递归深度产生所有可能的组合。

strr = "123ABC"

def prod(items, level):
    if level == 0:
        yield []
    else:
        for first in items:
            for rest in prod(items, level-1):
                yield [first] + rest

for ln in range(1, len(strr)+1):
    print("length:", ln) 
    for s in prod(strr, ln):
        print(''.join(s))

它也称为cartesian productitertools中有相应的功能。