当前位置: 首页 > news >正文

python的filter()、map()、reduce()函数测试

filter函数测试:过滤出奇数

mylist=[n for n in range(0,10)]
new_list = list(filter(lambda x:(x%2==1),mylist))
print(f"{type(new_list)}")
print('new_list=',new_list)

map函数测试:计算每个列表元素的平方

mylist=[n for n in range(0,10)]
new_list = list(map(lambda x:x**2,mylist))
print(f"{type(new_list)}")
print('new_list=',new_list)

reduce函数的测试

功能:用于对序列进行累积操作(如累加、累乘等),最终返回一个单一值。
语法(在 Python 3 中需要从 functools 模块导入):

最简测试

from functools import reduce
total=reduce(lambda x,y:x+y, [1,2,3,4,5])
print(total)

 

计算和的lambda表达式

f = lambda x,y:x+y
print(f(1,2))

 输出结果是3

使用reduce计算列表中所有数的和

from functools import reduce
mylist=[n for n in range(0,10)]
total = reduce(lambda x,y:x+y,mylist)
print(f"{type(total)}")
print('total=',total)

使用reduce计算列表中所有偶数的和

from functools import reduce
mylist=[n for n in range(0,10)]
total = reduce(lambda x,y:x+y,list(filter(lambda x :(x%2==0),mylist)))
print(f"{type(total)}")
print('total=',total)

逐次递减:函数参数的次序问题

测试目的,函数执行的结果总是作为函数下次迭代的第一个参数。

from functools import reduce
mylist=[n for n in range(0,10)]
total = reduce(lambda x,y:x+y,list(filter(lambda x :(x%2==0),mylist)))
print(f"{type(total)}")
print('total=',total)

mylist=[n for n in range(0,10)]
mylist.reverse()
print(mylist)

#8 - 6 - 4 - 2 == -4
total = reduce(lambda x,y:x-y,list(filter(lambda x :(x%2==0),mylist)))
print(f"{type(total)}")
print('total=',total)

字符串转数字

这是在

from functools import reduce
def charToInt(s):
        print('s = ',type(s),s)
        mychars=''.join([chr(n) for n in range(ord('0'),ord('9') + 1)])
        mynumbers=[n for n in range(0,10)]
        mydict=dict(zip(mychars,mynumbers))
        n = mydict[s]
        print("n = ",n)
        return n

x = list(map(charToInt,'4567'))
print('x = ',type(x),x)

 

from functools import reduce
def strToInt(s):
    def fun(x,y):
        return x*10+y
    def charToInt(s):
        print('s = ',type(s),s)
        mychars=''.join([chr(n) for n in range(ord('0'),ord('9') + 1)])
        mynumbers=[n for n in range(0,10)]
        mydict=dict(zip(mychars,mynumbers))
        n = mydict[s]
        print("n = ",n)
        return n
    return reduce(fun,map(charToInt,s))
string='4567'
x = strToInt(string)
print(x)

 

简化上面的代码就是

from functools import reduce
total = reduce(lambda x,y:x*10+y,map(lambda c:dict(zip('0123456789',range(0,10)))[c] ,'4567'))
print('x = ',type(total),total)

小结

相关文章:

  • C 语言 - 指针与const复杂声明完全掌握 | 右左法则详解与实践指南
  • ES6变量声明:let、var、const全面解析
  • sudo snap升级报错
  • 源码编译安装Nginx
  • tensorflow-gpu==2.6对应的 transformers 版本
  • AI Agent
  • 蓝桥杯C++组部分填空题
  • 如何为C++实习做准备?
  • Samtec行业科普 | 人工智能嵌入式解决方案
  • Mitosis:跨框架的UI组件解决方案
  • Java 与 LibreOffice 集成开发指南
  • 嵌入式MCU常用模块
  • 玩转Docker | 使用Docker搭建Blog微博系统
  • 从零开始:在 GrapesJS Style Manager 中新增 row-gap 和 column-gap
  • API身份验证与密钥管理最佳实践
  • javaweb综合训练
  • CExercise_10_1动态数组Vector
  • scrapy爬虫框架采集完成后进行暂停延时关闭方法
  • 难度偏低,25西电人工智能学院821、833、834考研录取情况
  • Java常用工具算法-7--秘钥托管云服务2(阿里云 KMS)
  • 怎样免费设计网站建设/2345导网址导航下载
  • wordpress 站内链接/互联网营销师报名官网
  • 北京网站建设价格便宜/目前最好的营销模式
  • 龙岗招聘网/关键词优化排名用哪个软件比较好
  • 校园网站建设说明书/网络销售平台有哪些
  • 违法人员都是怎么建设网站的/宁波seo优化公司排名