Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用列表理解计算所有列表元素的总和_Python_For Loop_List Comprehension - Fatal编程技术网

Python 使用列表理解计算所有列表元素的总和

Python 使用列表理解计算所有列表元素的总和,python,for-loop,list-comprehension,Python,For Loop,List Comprehension,我不知道我现在是不是很蠢,但我正在尝试将一个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

我不知道我现在是不是很蠢,但我正在尝试将一个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

我尝试了多种方法来实现这一点,但我的谷歌搜索遇到了麻烦。

如果你有一个数字列表,
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)

然而,我不知道理解如何帮助你解决这个问题。

如果你真的想使用列表理解,你可以创建一个新的列表,其中包含相同数量的列表条目作为你的输入数据。然后,展平列表,最后使用其长度作为总和。您必须分别对正值和负值执行此操作,不过:

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)
long_pos=[[i代表范围内的i(l)],如果l>0,则代表内容中的l]
long_neg=[[i表示范围内的i(abs(l))]表示材料中的l,如果l<0]
平面位置=[i表示子单元在长位置上的位置,i表示子单元在长位置上的位置]
平负=[i表示长中的sub\u负表示短中的i]
项目=透镜(平正)-透镜(平负)

你要找的是
sum(stuff)
吗?我想你应该用
[]
括号来理解列表。此外,sum(stuff)也可以很好地工作。我知道sum()的用法,但如果可以的话,我会尝试使用列表理解来完成。列表理解的全部目的是生成一个新的列表。这是一个完全不适合这份工作的工具。你解决了我的问题,非常感谢!没问题!在这种情况下,请随意接受我的回答:)