嘿,我希望能够执行this,但我有选择性地总结了哪些列表。让我们说,同样的例子,但只加上第3和第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)