如何将元组中的一组列表中的第一个值相加?

时间:2011-01-11 21:50:12

标签: python tuples

嘿,我希望能够执行this,但我有选择性地总结了哪些列表。让我们说,同样的例子,但只加上第3和第4列表中的第一个数字。

4 个答案:

答案 0 :(得分:8)

类似的东西:

sum(int(tuple_list[i][0]) for i in range(3,5))

range(x,y)生成从x(包括)到y(排除)的整数列表,并生成1作为步骤。如果您想更改range(x, y, step),则会执行相同操作,但会逐步增加。

您可以找到官方文档here

或者你可以这样做:

sum(float(close[4]) for close in tickers[30:40])

答案 1 :(得分:1)

>>> l1
[(0, 2), (1, 3), (2, 4), (3, 5), (4, 6), (5, 7), (6, 8), (7, 9), (8, 10), (9, 11)]
>>> sum([el[0] for (nr, el) in enumerate(l1) if nr in [3, 4]])
7
>>> 

答案 2 :(得分:0)

如果您想限制每个元素的某些属性,可以在将其提供给链接中发布的代码之前使用filter()。这样您就可以根据需要编写独特的过滤器。这对你给出的例子不起作用,但似乎你对一般情况更感兴趣。

sum(pair[0] for pair in filter(PREDICATE_FUNCTION_OR_LAMBDA, list_of_pairs))

答案 3 :(得分:0)

还没有看到使用reduce的答案。

reduce(lambda sumSoFar,(tuple0,tuple1): sumSoFar+tuple0, list, 0)

本质上,sum与reduce(int.__add__, list, 0)

相同

编辑:没有读取谓词部分。

很容易修复,但可能不再是最佳答案了:

predicate = lambda x: x == 2 or x == 4
reduce(lambda sumSoFar,(t0,t1): sumSoFar+(t0 if predicate(t0) else 0), list, 0)