gpt4 book ai didi

python reduce问题对象没有属性

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:45 25 4
gpt4 key购买 nike

snds 是节点的集合,具有'alloc'的属性。下面两个语句看起来和我一样,但是第一个抛出错误 AttributeError: 'int' object has no attribute 'alloc'

我可能在某些我无法发现的地方犯了一些愚蠢的错误。

#return reduce( lambda x,y:x.alloc+y.alloc, snds)
return reduce( lambda x,y:x+y, map( lambda x:x.alloc, snds) )

最佳答案

reduce 接受的函数有两个参数。一个是正​​在处理的当前元素,另一个是累加器(或本例中的运行总计)。

如果您将 reduce 写成一个循环,这就是它的样子。

x = 0
for y in snds:
x = x.alloc + y.alloc

这里的错误是运行总和将始终是一个 int 而不是一个节点,因此它永远不会具有属性 alloc。

正确的循环应该是这样的

x = 0
for y in snds:
x = x + y.alloc

如果使用 reduce 会是这样。

total = reduce((lambda total, item: total+item.alloc), snds)

但是,一个更好的方法是使用 sum 和一个生成器。

total = sum(item.alloc for item in snds)

关于python reduce问题对象没有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24818635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com