【问题标题】:returning list of sums [duplicate]返回总和列表[重复]
【发布时间】:2017-03-22 09:15:28
【问题描述】:

首先,我对 python 和一般编程非常陌生,我正在努力掌握嵌套 for 循环和嵌套列表的概念。 在下面的代码中,我试图获取列表 list1 中的每个列表并使用 for 循环对它们求和。我知道 range 函数会有所帮助。

代码:

def sum_list(list1):
    list_of_sums = []
    total = 0
    for l in list1:
        for value in l:
            total = total + value
            list_of_sums.append(total)
        return list_of_sums

输入测试:

list1 = [[4, 7, 9], [4, 5, 2], [4, 5, 6]]
print(sum_list(list1))

输出:

[4, 11, 20]

期望的输出:

[20, 11, 15]

【问题讨论】:

  • 没有人回答。让我们把它变成一个学习时刻,一步一步地经历它。
  • 首先,修正缩进。
  • list_of_sums.append(total) 之后,加上print(l, value, total, list_of_sums)。这将使您了解正在发生的事情和时间。您应该注意到一些不寻常的事情。
  • @Jean-FrançoisFabre 实际上,缩进本身就是问题的 90%。不重新初始化 total 是另外 10%。
  • @AlexHall 我们在这里通过发布我们拥有的知识来帮助用户。让我们在分享中学习。但是您投票的方式对任何海报都不利。别再劝阻别人了

标签: python nested-loops nested-lists


【解决方案1】:

您的代码中有一些逻辑问题。仔细考虑何时应该重置总计以及何时将结果附加到 list_of_sums。

def sum_list(list):
    list_of_sums = []
    for sublist in list:
        total = 0
        for value in sublist:
            total += value
        list_of_sums.append(total)
    return list_of_sums

【讨论】:

  • 不要给他们灌输答案,他们可以通过自己解决问题来了解更多。
  • 抱歉不知道什么时候回答,什么时候取笑。我创建了一个易于理解和学习嵌套循环的代码。我没有足够的分数来评论问题,通过回答我少了一个。太棒了。
  • 嗯 7 人同意我的评论,说不回答,所以有一个很好的迹象。不是每个人都必须做“戏弄”,我已经开始了这个过程。如果从现在开始 OP 仍然没有回复 cmets,我将撤回我的投票。但如果 OP 还没有看到它,我希望你删除答案,这将恢复你的积分。
  • 我正在回答,而您的评论来了。所以现在你想让我删除我的答案,因为你决定教别人(那 7 个人喜欢那个)?我会暂时保留我的答案,只是因为我想对此线程发表评论。顺便说一句,你知道人们通过不同的方式学习吗?有些人还通过看到答案并思考它的工作原理来学习。也许有人通过阅读问题下方的那 14 个 cmets 来学习 - 大多数 cmets 都在反对投票。
  • 好的,除非编辑答案,否则我现在无法撤回我的反对票。除非您想恢复声誉,否则我认为现阶段不值得删除。顺便说一句,“所以现在你想让我删除我的答案,因为你决定教别人”——这个请求现在对你来说可能看起来很疯狂,但实际上有 4 人在发布后立即删除了他们的答案,我没有多说什么。
【解决方案2】:

您可以通过使用列表推导来实现这一点,这是 python 提供的最好的东西之一。它确实减少了你的代码,但很容易理解。 在发布我的帮助之后。如果您喜欢,您可以在 list comprehension 上搜索更多信息

http://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/

def sum_list(list1):
    return [sum(inner_list) for inner_list in list1]

print sum_list([[4, 7, 9], [4, 5, 2], [4, 5, 6]])

【讨论】:

  • 该代码有效。请解释你的代码
  • 他们是python的初学者,需要学习如何使用循环。这没有帮助。
  • 有人能解释一下,为什么要投反对票?
  • 我确实解释过了。 OP 说“我正在努力掌握嵌套 for 循环和嵌套列表的概念。”,他们需要学习如何克服这一点。
  • @AlexHall 谢谢。 :)
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
相关资源
最近更新 更多