Python 如何对元组中一组列表中的第一个值求和?

Python 如何对元组中一组列表中的第一个值求和?,python,tuples,Python,Tuples,嘿,我希望能够表演,但要有选择性地总结哪些列表。比方说,同一个例子,但只将第三个和第四个列表中的第一个数字相加。类似于: sum(int(tuple_list[i][0]) for i in range(3,5)) range(x,y)生成从x(包括)到y(排除)和1的整数列表作为步骤。如果要更改范围(x,y,步长)也会这样做,但会逐步增加 你可以找到官方文件 或者你可以: sum(float(close[4]) for close in tickers[30:40]) 如果您想限制每个元素

嘿,我希望能够表演,但要有选择性地总结哪些列表。比方说,同一个例子,但只将第三个和第四个列表中的第一个数字相加。

类似于:

sum(int(tuple_list[i][0]) for i in range(3,5))
range(x,y)生成从x(包括)到y(排除)和1的整数列表作为步骤。如果要更改
范围(x,y,步长)
也会这样做,但会逐步增加

你可以找到官方文件

或者你可以:

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

如果您想限制每个元素的某些属性,可以在将其提供给链接中发布的代码之前使用。这将允许您根据需要编写唯一的筛选器。这对您给出的示例不起作用,但似乎您对一般情况更感兴趣

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

还没有看到使用reduce的答案

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

本质上,sum与
reduce(int.\uuuu add\uuuu,list,0)

编辑:未读取谓词部分

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

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

你真的不能用这个答案来解决你的问题吗?现在还不清楚你到底想要什么。它总是一个连续的范围吗?你为什么需要第三和第四个?为什么不是第三和第五?因为我在元组中的每个列表都包含特定股票的日期和收盘价。为了计算30天前的SMA10,我需要元组位置30到39的收盘价之和。糟糕,它们是字符串。我是这样做的。对于close-in-tickers[30:39]:intclose=float(close[4])sumclo+=intclose而不是构造一个中间列表,只需使用一个生成器表达式,省去大括号:
sum(tuple_-list[i][0]表示范围(3,5)内的i))
谢谢您的建议。更正了。这看起来应该行得通,但我刚刚意识到我在里面的价格是整数。我应该添加什么来转换它们呢?我不明白你在问什么,如果它们是int,那么总结起来应该不会有问题。我们可以停止在Python中使用reduce吗?混淆和糟糕的算法复杂性不是我们的目标。如果不考虑求和的条件部分,我不明白为什么reduce是一个糟糕的选择。它循环遍历一个列表,将给定的函数依次应用于每个元素。说reduce是一个糟糕的选择就像说map是对列表中的每个元素应用函数的糟糕选择一样?试着告诉所有使用真正FP语言的人。”reduce的算法复杂度很低?据我所知是O(N)。
predicate = lambda x: x == 2 or x == 4
reduce(lambda sumSoFar,(t0,t1): sumSoFar+(t0 if predicate(t0) else 0), list, 0)