sum 附带列表中的第一个值

在传统中 python 功能
sum

给 sum 的
list

:


sum/[0,1,2,3,4]/=10


另一方面,如果您有投资列表,该怎么办?


sum/[[1,2,3],[4,5,6],[7,8,9]]/


我们发现错误:


Traceback /most recent call last/:
File "<input/>", line 1, in <module>
TypeError: unsupported operand type/s/ for +: 'int' and 'list'


除此之外,我们可以找到
sum

第一个值 /指数 0/ 在附件列表中? 如那个:


something/[[1,2,3],[4,5,6],[7,8,9]]/=12


</module>
已邀请:

帅驴

赞同来自:

获得 sum 您需要具有生成器表达的所有第一个元素


>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> sum/i[0] for i in a/
12


你得到
unsupported operand type/s/ for +: 'int' and 'list'

, 因为尝试添加三个列表,这不是所需的行为。

如果您需要一个第一个元素列表,然后找到它们 sum, 您可以尝试理解列表。


>>> l = [i[0] for i in a]
>>> l
[1, 4, 7]
>>> sum/l/
12


或者你可以调用方法
__next__

, 因为 list 它是迭代的 /如果一个 Py3/


>>> sum/zip/*a/.__next__///
12

詹大官人

赞同来自:

或者你可以使用
https://docs.python.org/2/libr ... 23zip
:


>>> l=[[1,2,3],[4,5,6],[7,8,9]]
>>> sum/zip/*l/[0]/
12

窦买办

赞同来自:

您可以创建一个搜索功能 sum 投资清单:


def nested_sum/par/:
total = 0
for k in par:
if isinstance/k, list/: # checks if `k` is a list
total += nested_sum/k/
else:
total += k
return total


@Kasara 和 @Bhargav 也有一些整洁的答案,检查出来!

冰洋

赞同来自:

为了 python 初学者:

普通的
for

循环并用来尝试,除了在空名单时处理异常。


>>> l = [[1,2,3],[4,5,6],[7,8,9], []]
>>> result = 0
>>> for i in l:
... try:result += i[0]
... except IndexError:pass
...
>>> result
12
>>>

郭文康

赞同来自:

>>> sum/map/lambda x:x[0],[[1,2,3],[4,5,6],[7,8,9]]//
12

涵秋

赞同来自:

像这样的东西很容易
numpy

:


In [16]: import numpy as np

In [17]: a = [[1,2,3],[4,5,6],[7,8,9]]

In [18]: my_array = np.array/a/

In [19]: my_array[:,0].sum//
Out[19]: 12

要回复问题请先登录注册