写一个prod()函数,可以接受一个list并利用reduce()求积

118 阅读2分钟

写一个prod函数,接受一个……


这里是三岁,今天的作业解析来啦,快来康康吧!

题目一

写一个prod()函数,可以接受一个list并利用reduce()求积

思路

一看题目自定义函数 ,得到的结果是求积,而且要用高阶函数reduce() 那么怎么办呢先上代码!

#导入库
from functools import reduce


# 写一个prod()函数,可以接受一个list并利用reduce()求积

def prod(list):# 声明自定义函数prod()
    def quadrature(x, y): # 设计自定义函数quadrature
        return x*y # 返回乘积
    return reduce(quadrature, list) 

# 测试
list = [1,2,3,4,5]
print(prod(list))

结果
120

那么原理是声明呢?

'''
参数1 参数2 积
1     2  = 2
2     3  = 6
6     4  = 24 
24    5  = 120
'''

在这里插入图片描述
具体的方法见:高阶函数

简化写法

可以使用匿名函数

# 匿名函数
def prod(list):
    return reduce(lambda x ,y : x*y , list)

list = [1,2,3,4,5]
print(prod(list))

题目二

#[’’, 'abc@qq.com ‘, ‘’, ’ cb a@163.com’, ‘ech@hotmail.com ‘, ‘’]
#编写一个程序去除邮件地址里的空格,去除空邮件地址,最后拼接成用分号隔开的字符串形式
aa = [’’, 'abc@qq.com ‘, ‘’, ’ cba@163.com’, 'ech@hotmail.com ', ‘’]
#自己编写一个去除字符串空格的方法strip replace join,split;

解析

一个列表要把空字符串去除然后把原有字符串里面的空格去除尽量不使用自带函数

思路一:
使用for循环再用 if遍历

# 循环
aa_list = ['', 'abc@qq.com ', '', ' cba@163.com', 'ech@hotmail.com ', '']
bb = ''
for aa in aa_list: # 遍历列表
    if aa == '': # 判断是不是空字符串
        continue
    else:
        for a in aa: # 遍历字符串
            if a ==  ' ': # 判断是不是空格
                continue
            else:
                bb += a # 添加到字符串bb
        bb += ';' # 在合适的地方添加;
# 测试
print(bb)

结果:
abc@qq.com;cba@163.com;ech@hotmail.com;

思路二:可以采用高阶函数里面的filter()进行处理

上代码

# 高阶函数filter()
aa_list = ['', 'abc@qq.com ', '', ' cba@163.com', 'ech@hotmail.com ', '']
bb = ''
for aa in filter(lambda x :x != '', aa_list):
    for a in filter(lambda x :x != ' ', aa):
        bb += a
    bb += ';'
print(bb)

结果:
abc@qq.com;cba@163.com;ech@hotmail.com;

啊~ 今天的分享就到这里有问题的可以私聊或者留言,点赞,搜餐,留言,转发,感谢大家的支持!!!