【问题标题】:Python Sum of all subset of list using list comprehension and recursion使用列表理解和递归的所有列表子集的 Python 总和
【发布时间】:2015-12-30 07:32:07
【问题描述】:

我正在尝试编写一个程序,该程序返回列表的所有子集总和的集合。我必须使用列表理解和递归。

例子:

[1,2,3,10]
return set([0,1,2,3,4,5,6,100,101,102,103,104,105,106])

我写代码:

def function(L):
    if len(L) == 0:
        return []
    return list((L[index] + rest) for index in range(len(L)) for rest in function(L[:index])+L[index+1:])

此代码返回子集的总和,但仅返回 2 个或更多元素子集。
示例
[1,2,3,4,100]
返回 [3,4,5,6,101,102,103,104,105,106]

【问题讨论】:

  • 一门课程有一些大型的编程作业吗?在过去的 2 天内,我至少看到过 3 次这个问题。
  • 是的,这是课程的一部分,但不是更大问题的一部分。
  • 你能编辑你当前问题的最后一句话吗? “总和但没有一个或没有元素的总和”?
  • 程序不考虑 0 和 1 元素子集
  • 所以你的结果中没有 1 个元素或 0 个元素的子集总和对吗?

标签: python python-3.x recursion


【解决方案1】:

这是似乎产生正确答案的变化:

def function(L):
 if len(L) == 0:return []
 return L+list((L[index] + rest) for index in range(len(L)) for rest in function(L[:index])+L[index+1:])

【讨论】:

    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多