有人可以在下面的例子中解释reduce()的结构:
def f2(list):
return reduce(lambda string, item: string + chr(item), list, "")
我知道f2将int的列表转换为字符串,但我的问题是理解 在这种情况下减少。 我知道reduce的基本结构是 reduce(function,sequence [,initial])但是这个 对我来说有点混乱。 有人可以解释 reduce(lambda string,item:string + chr(item),list,“”)并给我一些类似的例子吗? 提前谢谢。
答案 0 :(得分:3)
return reduce(lambda string, item: string + chr(item), list, "")
大致翻译为
string = ""
for item in list:
string = string + chr(item)
return string
答案 1 :(得分:3)
Reduce通常称为fold。例如,如果您有一个列表ls = [a,b,c,d]
和一个二进制操作def plus(x,y): x + y
,那么reduce(plus, ls)
将折叠到
plus(plus(plus(a, b), c), d)
等于
(((a+b)+c)+d)
你的f2
正在做类似的事情,即追加字符串(从整数转换后):(我真的希望那些parens匹配......)
(((("" + chr(a)) + chr(b)) + chr(c)) + chr(d))
提供的初始值为""
(折叠操作有两种不同的输入类型时需要)
@ python专家:我不确定reduce
是否是左侧折叠,对我而言似乎更自然。请告诉我,如果我错了。
答案 2 :(得分:2)
代码将chr()
应用于列表的每个元素,并将结果连接成一个字符串。
reduce()
来电与以下内容相同:
return "" + chr(list[0]) + chr(list[1]) + ... + chr(list[list.length - 1])
""
是reduce()
的第三个参数。
return reduce(lambda string, item: string + chr(item), list, "")
为列表中的每个项目调用。它只是将chr(item)
附加到上一次迭代的结果中。
有关使用reduce()
的更多示例,请参阅Useful code which uses reduce() in python