老师我这个reduce配合lambda的方法该怎么改呢

来源:12-6 filter

慕粉13006204624

2017-10-22

from functools import reduce

list_x = [(0,0),(1,3),(-1,2)]


r = reduce(lambda x,y:x+y,list_x)
print(r)
为什么这样得出的结果是
(0,0,1,3,-1,2)

还有如果我把数组的定义换成这样为什么不对呢
list_y=[(1,3),(-1,2)]
list_x=[(0,0),list_y]

写回答

2回答

7七月

2017-10-22

楼下给出了答案

0
0

runzx

2017-10-22

# 下面是python3 reduce()源码,分析后可得出原因:
def reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        value = next(it)    # value 被赋值成(0,0)
    else:
        value = initializer
    for element in it:
        value = function(value, element)    # x+y 变成元组合并,所以最后成了(0,0,1,3,-1,2) 
    return value


0
0

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14447 学习 · 4438 问题

查看课程