【问题标题】:Using list comprehension to calculate the sum of all list elements使用列表推导计算所有列表元素的总和
【发布时间】:2020-12-03 14:38:54
【问题描述】:

不知道我现在是不是很愚蠢,但我正在尝试将一个 int 列表转换为一个 int。问题是我试图仅通过列表理解来做到这一点,但我每次都失败了

class MathStuff():
def add_stuff(self, *stuff):
    items = 0
    numbers = (i for i in stuff)
    items += [i for i in e]
#trying to do "for i in (i for i in stuff)" but assign it to a variable

我已经尝试了多种没有“for 循环”的方法来做到这一点,但我的谷歌搜索遇到了障碍。

【问题讨论】:

  • sum(stuff) 是您要找的吗?
  • 我认为你应该使用[] 括号来理解列表。此外, sum(stuff) 可以正常工作
  • 我知道 sum() 但如果可以的话,我会尝试通过列表理解来做到这一点。
  • 列表解析的全部目的是生成一个新列表。这是一个完全不适合这项工作的工具。

标签: python for-loop list-comprehension


【解决方案1】:

如果您有一个数字列表,l,并且您不想使用 sum。我想你可以照常做:

l = range(1, 100)

s = 0
for i in l:
  s += i

或者更实用的方法。

from operator import add
from functools import reduce

l = range(1, 100)

reduce(add, l)

但是,我不明白推导如何帮助您解决这个问题。

【讨论】:

  • 您解决了我的问题,非常感谢!
  • 没问题!在这种情况下,请随时接受我的回答:)
【解决方案2】:

如果您真的想使用列表推导,您可以创建一个新列表,其中列表条目的数量与您的输入数据相同。然后,将列表展平,最后将其长度用作总和。但是,您必须分别对正值和负值执行此操作:

long_pos = [[i for i in range(l)] for l in stuff if l > 0]
long_neg = [[i for i in range(abs(l))] for l in stuff if l < 0]
flat_pos = [i for sub in long_pos for i in sub]
flat_neg = [i for sub in long_neg for i in sub]
items = len(flat_pos) - len(flat_neg)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2014-02-05
    • 2019-02-14
    • 2021-11-07
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多