reduce 函数(用 Python 编写)调用“TypeError:'int' object is not subscriptable”,但它作用于列表列表

Posted

技术标签:

【中文标题】reduce 函数(用 Python 编写)调用“TypeError:\'int\' object is not subscriptable”,但它作用于列表列表【英文标题】:A reduce function (written in Python) calls "TypeError: 'int' object is not subscriptable" but it's acting on a list of listsreduce 函数(用 Python 编写)调用“TypeError:'int' object is not subscriptable”,但它作用于列表列表 【发布时间】:2021-01-22 06:50:30 【问题描述】:
while reduce(lambda x, y: x[0] + y[0], final_assignments, 0) < min:

final_assignments 是[[5,100]],当函数引发“TypeError:'int' object is not subscriptable”时。我不明白问题出在哪里,希望得到帮助。

【问题讨论】:

你想对数组求和吗? sum()reduce() 更容易 不知道这个功能,谢谢!无论如何我找到了解决这个问题的方法 【参考方案1】:

我找到了解决办法,初始值 0 不是一个列表,所以我不能添加 0[0] + y[0]。 相反,lambda 应该根据类型选择要选择的值:

reduce(lambda x,y: x[0]+y[0] if type(x) == list else x+y[0], final_assignments, 0)

【讨论】:

if 是多余的,只有else 分支才会被采用——请参阅我的答案。【参考方案2】:

归约作用于两项:先前返回的结果和下一个输入。

由于您的结果类型是int,所以第一个参数类型也需要是int

while reduce(lambda x, y: x + y[0], final_assignments, 0) < min:

【讨论】:

以上是关于reduce 函数(用 Python 编写)调用“TypeError:'int' object is not subscriptable”,但它作用于列表列表的主要内容,如果未能解决你的问题,请参考以下文章

Python 之reduce()函数

python中reduce()函数

python的reduce()函数

python 中的高级函数reduce()

如何在python中为Hadoop Map Reduce作业编写组合器和分区器?我如何在Hadoop Job中调用它

python常用函数2