我使用reduce函数收到此错误TypeError(“'int'对象不可迭代”,)

时间:2018-10-30 13:48:21

标签: python python-3.x

从以下位置更新代码时收到错误消息

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)

任何有关此行出现问题的信息都会有所帮助

2 个答案:

答案 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))