首页 > 解决方案 > 使用递归序列

问题描述

我正在尝试编写一个函数,该函数输出所有可能的字符列表组合,其中包含长度且没有任何重复,如 aa、bb 等。

我现在在这个阶段:

def sequences(char_list, n, lst = []):
    if len(lst) == n:
        print(lst)
    else:
        for i in range(len(char_list)):
            temp_list = [char_list[j] for j in range(len(char_list)) if i != j]
            sequences(temp_list, n, lst + [char_list[i]])

print(sequences(["a", "b", "c"], 2))

输出是正确的,但最后我没有。我其实不知道为什么。

['a', 'b']  
['a', 'c']  
['b', 'a']  
['b', 'c']  
['c', 'a']  
['c', 'b']  
None

在输出中获取字符串而不是列表的最佳方法是什么?

标签: pythonrecursion

解决方案


该函数sequences不返回任何内容(return代码中没有任何语句),因此它会自动返回None. print(sequences(["a", "b", "c"], 2))将执行此函数并打印其返回值,输出None.

要获取字符串而不是列表,请像这样连接列表中的所有字符串:

print(''.join(lst))

推荐阅读