首页 > 解决方案 > 将查找字符串所有排列的函数转换为生成器

问题描述

我有以下函数来查找正确工作的字符串的所有排列:

def permute_string(str):
    if len(str) == 0:
        return ['']
    prev_list = permute_string(str[1:len(str)])
    next_list = []
    for i in range(0,len(prev_list)):
        for j in range(0,len(str)):
            new_str = prev_list[i][0:j]+str[0]+prev_list[i][j:len(str)-1]
            if new_str not in next_list:
                next_list.append(new_str)
    return next_list

我想把它变成一个返回生成器的函数,以便当我这样做时:

gen = permute_string("abc")
print(next(gen))

我会得到“abc”。我尝试在附加new_str到 my之后添加一个 yield 语句,next_list但它不起作用(即我收到以下消息:TypeError: object of type 'generator' has no len(),这很正常)

标签: pythongenerator

解决方案


推荐阅读