Discuss / Python / 交作业,第二题 ,两种不同方法

交作业,第二题 ,两种不同方法

Topic source

第一种:

#Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,

#可以接受一个list并利用reduce()求积

#2017年10月11日13:21:23

* coding: utf-8 *

from functools import reduce def prod(L): def multiply(x,y): return x y return reduce(multiply,L) print('3 5 7 9 =',prod([3,5,7,9]))

#输出为:

#C:\Users\loysaid_yan>"F:\Users\loysaid_yan\AppData\Local\Programs\python course\

#map_reduce\test2.py"

#3 5 7 * 9 = 945

#总结:

#尤其要注意语句的缩进问题,这个问题还没有解决?

第二种:

#Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,

#可以接受一个list并利用reduce()求积

#这里用到Python 自带的lambda函数

#2017年10月11日13:40:32

-- coding: utf-8 --

from functools import reduce from collections import Iterable

def prod(L): if not isinstance(L,Iterable): raise TypeError('Parameter must be iterable') return reduce(lambda a,b:a*b,L)

print('3 5 7 * 9 =', prod([3, 5, 7, 9]))

#输出:

#3 5 7 * 9 = 945

#总结:

#print reduce(lambda x,y:x*y, range(1,5))

#lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,

#也就是函数对象。上面这句代码的含义就是:将1到5的连续整数列表传入lambda函数并用两个数的积替换列表中的数,

#也就是求5的阶乘。(((12)3)*4)


  • 1

Reply