【发布时间】:2020-12-03 07:28:52
【问题描述】:
我正在尝试编写一个函数,它可以输出所有可能的字符列表组合,其中包含长度且没有任何重复(如 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
在输出中获取字符串而不是列表的最佳方法是什么?
【问题讨论】:
-
你不要在最后打印
None,只是REPL通知你没有返回值。 -
你可以使用
itertools吗?这个函数已经存在 -
@JohnColeman 这不是 REPL,而是文件末尾的
print语句。 -
@SethPeace 好点。我没有看到那条线。当然,函数本身并不进行打印。
-
将
print(lst)替换为return lst,将sequences(temp_list, n, lst + [char_list[i]])替换为return sequences(temp_list, n, lst + [char_list[i]])。