【发布时间】:2014-10-01 18:54:58
【问题描述】:
我无法从列表中创建元素组合。
我想做的是在 Python 中创建一个递归函数,它返回元素的组合,例如列表 a = [1,2,3,4,5,6,7,8],结果将是组合 [1,2,3,4],[1,3, 4,5],[1,4,5,6],[1,2,4,5] 等。对于 8 个元素,它应该返回 70 个组合(如果我的数学计算正确的话)。虽然最好的选择是不重复组合。
我尝试对其进行编码,但我得到的只是[1,2,3,4],[1,3,4,5] etc 而不是组合[1,5,7,8]
我知道有一个特殊的功能,但我想递归地做。有什么建议吗?
nimed = ["A","B","C","D","E","F","G","H"]
def kombinatsioonid(listike,popitav):
if len(listike) < 4:
return
tyhi = []
for c in range(len(listike)):
tyhi.append(listike[c])
listike.pop(popitav)
print(tyhi)
kombinatsioonid(listike,popitav)
kombinatsioonid(nimed,1)
【问题讨论】:
-
瓦特是你的输出和你想要的输出之间的差异
-
好吧,例如,我没有得到像 [A,E,G,H] 这样的组合或上面 [1,5,7,8] 的组合
-
使用itertools.permutations()不是更好吗?
-
这确实很棒,但我将其作为一个学校项目来做,这特别要求我们不要使用 itertools。这只是更大计划的一部分,但我目前停留在这一点上。
-
"只是一个编辑" 将你的 forloop 更改为:for c in listike:tyhi.append(c)