Python 使用递归的序列
我正在尝试写一个函数,它输出所有可能的字符列表的长度组合,并且没有任何重复,比如aa、bb等 我现在站在这个舞台上:Python 使用递归的序列,python,recursion,Python,Recursion,我正在尝试写一个函数,它输出所有可能的字符列表的长度组合,并且没有任何重复,比如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
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
在输出中获取字符串而不是列表的最佳方法是什么?每个函数的末尾都有一个隐式的
返回None
。在代码的最后一行,您要求Python打印sequences
的输出,这是None
,因为没有指定返回值。函数sequences
不返回任何内容(代码中任何地方都没有return
语句),因此它将自动返回None
<代码>打印(序列([“a”、“b”、“c”]、2))将执行此功能并打印其返回值,输出无
要获取字符串而不是列表,请按如下方式连接列表中的所有字符串:
print(''.join(lst))
问题是,我在最后再次打印了它。你没有在最后打印
None
,只是REPL通知你没有返回值。你可以使用itertools
?这个功能已经完成了exists@JohnColeman这不是REPL,而是文件末尾的print
语句。@SethPeace Good point。我没看到那条线。当然,函数本身不进行打印。将print(lst)
替换为return lst
和序列(temp\u list,n,lst+[char\u list[i]])
替换为返回序列(temp\u list,n,lst+[char\u list[i]])
。