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”,但它作用于列表列表的主要内容,如果未能解决你的问题,请参考以下文章