今天遇到一个需求,求二维数组的和,尽量在一行代码中完成:
关于二维数组求和的几种方法:
a = [[1,2],[3,4],[5,6]]
1.sum(map(sum,a)) #first, map(func,a) 函数是对a中的每一个元素进行sum操作
解释一下map函数, map(fund, a) equals [func(i) for i in a] and return a list
2.sum(sum(i) for i in a) #second one
3.sum(sum(a[i]) for i in range(len(a))) #third one
4.reduce(lambda x,y:x+y , reduce(lambda x,y:x+y, a))
解释一下reduce(fun,a),只不说reduce返回的是一个结果值而不是一个list,第一步的时候是([1,2]+[3,4]) + [5,6]
得到一个[1,2,3,4,5,6], 然后进行的运算是(((((1+2)+3)+4)+5)+6) = 21
一般来说最常用的还是1和3这两种方法,不知道map or reduce, 一般都会采用3, 而知道的应该会采用1,比较简洁,至于效率方面没有尽兴比较。
感谢群里小伙伴们的建议和讨论,仅作为学习笔记。