【发布时间】:2018-05-05 14:01:45
【问题描述】:
我想知道如何使用 Python 中的 itertools 编写一个算法,为我提供数字列表有重复和没有的所有可能组合。
例如:列表[1,2]的所有可能组合:
[[1,1],[1,2],[2,2],[2,1]]
列表[1,2,3] 的所有可能组合。然后,该算法将在一个列表中为我提供 27 (33) 个不同的列表。
这是我的代码:
def all_possibilities(list):
result = [list]
for i in list:
new_list1 = list[:]
for k in range(len(list)):
new_list2 = list[:]
new_list1[k] = i
new_list2[k] = i
if new_list1 != list:
result.append(new_list1)
if new_list2 != list:
result.append(new_list2)
for u in result:
for y in result:
if u == y and (u is y) == False:
result.remove(y)
return (len(result),result)
【问题讨论】:
-
您在实施中遇到了什么具体问题?
-
如果您正在寻找与
itertools.permutations等效的纯python,您可以检查此方法的实现是docs -
你需要学习的概念是递归。
-
我知道递归的概念,但我尝试多次编写它,但我从来没有得到所有可能的解决方案。
-
向我们展示您的尝试,并向我们展示它是如何失败的。