【发布时间】:2021-11-29 21:14:27
【问题描述】:
我需要一个函数,它获取一个列表作为输入,并返回所有使用最大整数数量的组合(此处为 5),其中没有 2 个相邻整数,如 2、3 或 6,7。
list0 = [0, 3, 4, 6, 10, 11, 12, 13]
all_combinations = magic_function(list0)
all_combinations 是这样的:
[[0, 3, 6, 10, 12],
[0, 3, 6, 11, 13],
[0, 4, 6, 10, 12],
[0, 4, 6, 11, 13]]
这可以通过获取所有组合然后挑选出正确的组合来完成,但我不能让它占用太多内存或变慢,因为它必须处理长度不超过 98 个元素的列表。
【问题讨论】:
-
欢迎来到Stack Overflow. 请注意这不是代码编写或辅导服务。我们可以帮助解决具体的技术问题,而不是对代码或建议的开放式请求。请编辑您的问题以显示您迄今为止尝试过的内容,以及您需要帮助的具体问题。请参阅How To Ask a Good Question 页面,详细了解如何最好地帮助我们。
-
这其实是一个有趣的问题。
-
我认为您缺少几个有效输出:
[0, 3, 6, 10, 13], [0, 4, 6, 10, 13] -
“告诉我如何解决这个编码问题”是off-topic for Stack Overflow。我们希望您发送honest attempt at a solution,发布该尝试,然后询问有关它的具体问题(即解释它为什么不起作用或它有什么问题)。
-
np.diff和itertools.permutations将完成工作......
标签: python list combinations