【发布时间】:2015-01-10 23:48:23
【问题描述】:
所以我在处理列表/字符串的排列时遇到了问题,我很难解决。
所以,假设我有几个列表:
list1 = ["a"]
list2 = ["a","b","c","d"]
list3 = ["b","e"]
list4 = ["f","g","a"]
我需要计算所有可能的排列组合的数量,同时从每个列表中选择 1 个字符。所以,从第一个列表中,我选择了一个角色。 “a”,在这种情况下,因为列表中只有一项。接下来我从第二个列表中选择一个项目,但它不能是“a”,因为它是在我之前的列表中选择的,所以它可能是“b”、“c”或“d”。接下来我从第三个列表中选择一个项目,如果我在第一个中选择“a”,在第二个中选择“b”,我只能选择“e”,因为“b”之前已经使用过。第四个列表也是如此。
所以我需要从我的列表中计算唯一字符组合的所有可能组合。希望每个人都能得到我在这里的要求。或者如果可能的话,我什至不需要创建排列列表,我只需要计算总共有 HOW MANY 组合。什么会占用更少的内存,因为实际问题中可能存在大量单独的列表
更详细地说我的问题...如果我有两个列表: list1 = [“一个”] list2 = ["b"]
只有一种组合,因为您将位置保留在置换的字符串中。列表一不包含 a b,因此唯一的组合可能是 ("a","b"),而不是 ("b","a")。为了进一步扩展这个问题的限制。我不一定要检索所有排列的结果,我只想返回可能排列的 TOTAL NUMBER。返回结果会占用太多内存,因为我将使用大约 15 个列表,每个列表中有 1 到 15 个字符。
【问题讨论】:
-
解决 cmets 中的冲突:假设我们只有
list1 = ['a']和list2 = ['b']。您希望总数为 1,因为只有('a','b')作为有效选项,还是 2,因为您从('a','b')开始然后置换它,得到('a','b'), ('b', 'a')?
标签: python algorithm list unique permutation