求积问题[体会Python至简之道]

来源:互联网 发布:济南java招聘微信群 编辑:IT博客网 时间:2019/08/18 21:22

看到有在问,我就做一个类似问题的解答
问题链接
有兴趣可以点进去看一下
给出第一个解法:

def multi(p):    result =1    for i in p:        result = result*(i)    return results = input("输入一系列的数字\n")n = s.split()n = list(map(int, n))print(multi(n))

上面那个是按照他给出那个有点问题的代码稍作改写得到的
发现这个不断要乘的,就忍不住要用reduce写一遍

from functools import reducedef m(x, y):    return x * ydef multi(p):    return reduce(m,p)s = input("输入一系列的数字\n")n = s.split()n = list(map(int, n))print(multi(n)) 

再用reduce写写

from functools import reducedef multi(p):    return reduce(lambda x,y: x * y, p)s = input("输入一系列的数字\n")n = s.split()n = list(map(int, n))print(multi(n))

再把map也不用,写一遍:

from functools import reducedef multi(p):    return reduce(lambda x, y: int(x) * int(y), p)s = input("输入一系列的数字\n")n = s.split()print(multi(n))

再简短一行(Python的至简之道)

from functools import reducedef multi(p):    return reduce(lambda x, y: int(x) * int(y), p)s = input("输入一系列的数字\n")print(multi(s.split()))

再来,我们把multi也去掉(这样可读性就下降了很多了)

from functools import reduces = input("输入一系列的数字\n")print((lambda p: reduce(lambda x, y: int(x) * int(y), p))(s.split()))

这样算上那个import函数就都只有3行了(虽然可能在生成那个博客的时候可能被压缩提高一行)

如果觉得不错,可以关注下本肥宅哦~一起学习

**

欢迎关注我用于做笔记的公众号:肥宅Sean笔记

**
二维码

原创粉丝点击