从以下位置更新代码时收到错误消息
amount_recieved = 0
for tx in tx_recipient:
if len(tx) > 0:
amount_recieved += tx[0]
到reduce函数
amount_recieved = functools.reduce(lambda tx_sum, tx_amt: tx_sum + sum(tx_amt[0]) if len(tx_amt) > 0 else 0, tx_recipient, 0)
任何有关此行出现问题的信息都会有所帮助
答案 0 :(得分:1)
reduce
将从您提供的可迭代项(tx_recipient
中取出成对物品,因此在lambda tx_amt
中是单个值,因此您无法进行tx_amt[0]
。像这样重写它:
amount_recieved = functools.reduce(lambda x,y: x+y, tx_recipient)
答案 1 :(得分:0)
我假设您的循环只是对列表列表中每个嵌套列表的索引0处的数值求和(其中嵌套列表至少包含一项)。您使用functools.reduce()
使单行替换函数过于复杂,以得到相同的结果。您只需要sum()
。例如:
amount_received = sum(tx[0] for tx in tx_recipient if len(tx))