【发布时间】:2019-03-15 16:29:11
【问题描述】:
所以一直在努力解决这个问题,我已经很接近了,终于找到了一种方法,现在在生成的列表中重复了一些期望的输出。
input['a','r','t']
def permutations(string_list):
if len(string_list) <= 1:
return [string_list]
perm_list = []
for letter_index in range(len(string_list)):
perms_1 = string_list[letter_index]
rest = string_list[:letter_index] + string_list[letter_index + 1:]
for perms_2 in permutations(rest):
perm_list.append([perms_1] + perms_2)
return perm_list
输出
[[['a', 'r', 't'], ['a', 't', 'r'], ['r', 'a', 't'], ['r', 't', 'a'],
['t', 'a', 'r'], ['t', 'r', 'a']], [['a', 'r', 't'], ['a', 't', 'r'],
['r', 'a', 't'],
.........repeats.......repeats..
..for quite sometime but not infinite....]]]
期望的输出
[['a', 'r', 't'], ['a', 't', 'r'], ['r', 'a', 't'], ['r', 't', 'a'],
['t', 'a', 'r'], ['t', 'r', 'a']]
所以它是排列,但让我绊倒的是必须使用字符串列表并输出字符串列表列表。如果我只是使用字符串 'art' 作为输入或有一个列表输出 ['art','atr','rat',ect..] 只是没有确定我哪里出错了。不允许导入 itertools 并且真的希望我不需要 for 循环,但使用理解递归调用会给我相同的结果......任何帮助或指针表示赞赏。不只是寻找我想了解的重做......
【问题讨论】:
-
附言。您的程序对我来说运行正确 - 在生成输入列表的所有排列后它没有重复。
-
啊,我在将'art'输入递归函数之前调用递归函数将其分隔为['a','r','t']....发现我的错误。 ..
标签: python recursion permutation