前言:大家都觉得Python好学,可是有时候往往我写的代码和别人相比简直是被蹂躏。看到别人写的代码就觉得很优美,因此便总结了一下几个常用的能够提供你程序逼格的函数

map(func, *iterables)

对传入的可迭代数据中的每个元素进行处理,返回一个新的迭代器

map(func, *iterables)
功能: 对传入的可迭代数据中的每个元素放入到函数中进行处理,返回一个新的迭代器
参数:func 函数  自定义函数|内置函数iterables:可迭代的数据
返回值:迭代器

示例:

# (1)把一个字符串数字的列表转为 整型的数字列表
# ['1','2','3','4']  # ==> [1,2,3,4]
# 普通的处理方法
varlist = ['1','2','3','4']  # ==> [1,2,3,4]
newlist = []
for i in varlist:newlist.append(int(i))
print(newlist)# 使用map函数进行处理
varlist = ['1','2','3','4']
res = map(int,varlist) # <map object at 0x104ea8890>
print(list(res))# (2) [1,2,3,4] ==> [1,4,9,16]# 普通方法
varlist = [1,2,3,4]
newlist = []
for i in varlist:res = i ** 2newlist.append(res)
print(newlist)# 使用map函数处理这个数据
varlist = [1,2,3,4]
def myfunc(x):return x ** 2
res = map(myfunc,varlist)
print(res,list(res))# lamda函数 优化版
res = map(lambda x:x**2,varlist)
print(res,list(res))

reduce(func,iterable)

reduce(func,iterable)
功能:每一次从 iterable 拿出两个元素,放入到func函数中进行处理,得出一个计算结果,然后把这个计算结果和iterable中的第三个元素,放入到func函数中继续运算,得出的结果和之后的第四个元素,加入到func函数中进行处理,以此类推,直到最后的元素都参与了运算
参数:func: 内置函数或自定义函数iterable: 可迭代的数据
返回值:最终的运算处理结果
注意: 使用 reduce函数时,需要导入 from functools import reduce

示例:

from functools import reduce### (1) [5,2,1,1] ==> 5211# 普通方法
varlist = [5,2,1,1]
res = ''
for i in varlist:res += str(i)
res = int(res)'''
5 2 1 1
5 * 10 + 2 == 52
52 * 10 + 1 == 521
521 * 10 + 1 == 5211
'''# 使用 reduce完成
def myfunc(x,y):return x*10+y
varlist = [5,2,1,1]
# 调用函数
res = reduce(myfunc,varlist)
print(res,type(res))# (2) 把字符串的 '456' ==> 456
#  要求不能使用int方法进行类型的转换时,如何解决上面的问题# 定义函数,给定一个字符串的数字,返回一个整型的数字
def myfunc(s):vardict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}return vardict[s]# 1.先使用 map函数,把数字字符串,转为整型的数字
iter1 = map(myfunc,'456')# 2. 把数字列表中的值,使用lambda进行二次处理
iter2 = reduce(lambda x,y:x*10+y,iter1)
print(iter2)

filter(func,iterable)

filter(func,iterable)
功能: 过滤数据,把 iterable 中的每个元素拿到 func 函数中进行处理,如果函数返回True则保留这个数据,返回False则丢弃这个数据
参数:func  自定义函数itereble: 可迭代的数据
返回值:保留下来的数据组成的 迭代器

示例:

# 要求 保留所有的偶数,丢弃所有的奇数
varlist = [1,2,3,4,5,6,7,8,9]# 普通方法实现
newlist = []
for i in varlist:if i % 2 == 0:newlist.append(i)
print(newlist)# 使用 filter 进行处理# 定义一个函数,判断当前这个函数是否为偶数,偶数返回True,奇数返回False
def myfunc(n):if n % 2 == 0:return Trueelse:return False
#
# # 调用 过滤器 函数进行处理
it = filter(myfunc,varlist)
print(it,list(it))# 优化版
it = filter(lambda n:True if n % 2 == 0 else False,varlist)
print(it,list(it))

学会map、reduce、filter这三个函数,让你Python代码看起来更有逼格!相关推荐

  1. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

  2. python内置函数map reduce filter详解,面试必备知识

    面试时候经常会考到 map reduce filter 这三个内置函数的使用 map() 函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调 ...

  3. Swift-高阶函数如map,reduce,filter的一些总结

    Swift 这个语言,速度快,更加安全,代码少,易于阅读维护. 所以一些高阶函数在项目实际使用中也是蛮方便的总结如下: 高阶函数的定义:一个函数如果可以以某个函数作为参数,或者返回值,那么这个函数就称 ...

  4. 2023年美赛C题Wordle预测问题三、四建模及Python代码详细讲解

    更新时间:2023-2-19 16:30 相关链接 (1)2023年美赛C题Wordle预测问题一建模及Python代码详细讲解 (2)2023年美赛C题Wordle预测问题二建模及Python代码详 ...

  5. 读书笔记:求函数梯度的Python代码 numerical_gradient.py ← 斋藤康毅

    由多元函数全部变量的偏导数汇总而成的向量称为梯度(gradient). 梯度指示的方向是各点处的函数值减小最多的方向. 下文给出了求函数  的梯度的 Python 代码. [求函数梯度的Python代 ...

  6. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  7. python3高阶函数:map(),reduce(),filter()的区别

    转载请注明出处:https://www.cnblogs.com/shapeL/p/9057152.html 1.map():遍历序列,对序列中每个元素进行操作,最终获取新的序列 1 print(lis ...

  8. Python基础-map/reduce/filter

    一.map Python内置函数,用法及说明如下: class map(object):"""map(func, *iterables) --> map objec ...

  9. Python函数式编程,map/reduce,filter和sorted

    什么是函数式编程? 与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式. 最主要的特征是,函数是第一等公 ...

最新文章

  1. 【IDAX投研中心】BCH果然最强
  2. oracle管理 题库,Oracle数据库管理与开发习题集
  3. RTEMS移植USB无线网卡的设想
  4. [JAVA基础] 了解构造器Constructor———你真的会用构造器吗?
  5. 对那些刷抖音外放音乐的人,就这么治他!| 今日最佳
  6. P5081 Tweetuzki爱取球(期望)(线性求逆元)
  7. 【错误记录】Invalid character found in method name. HTTP method names must be tokens
  8. 飞鸽传书2011绿色版使用简介
  9. 用vue实现简单实时汇率计算功能
  10. frameset ,iframe的使用
  11. Anybody = Nobody
  12. 转存文章— 网游加速器实现原理解析
  13. 十六进制转换成二进制matlab,在matlab中十六进制到二进制和十进制
  14. Redmi AirDots只有一边有声音?? 如何进行双耳连接?
  15. Unity LightMap之动态切换LightMap模拟白天夜晚
  16. 2021年秋招面经分享·平头哥【芯片设计/验证/DFT工程师】
  17. 信息孤岛影响_解读制造业信息化转型的11大关键点!
  18. 爬取糗事百科段子 + 数据可视化
  19. HTML中的5种空格表示
  20. 将数组转换成集合Arrays.asList,不可进行add和remove操作的原因

热门文章

  1. 你想要创建一个属于自己的网站吗?十大免费网站
  2. 小白在线要饭系统源码
  3. 城市公共交通周 9月18日郑州5条公交免费坐
  4. 斐讯n1刷linux服务器,斐讯N1刷Ubuntu系统配置SMB
  5. 【特别优惠征稿】2022年第二届人工智能与云计算国际会议
  6. .net 汉字转拼音 - 输入汉字获取其拼音
  7. C#基础--LINQ
  8. 看漫画学python 怎么样_看着漫画学Python是种怎样的体验?
  9. 毕业论文的流程图怎么画
  10. 家用计算机长期不关机的后果,长时间不关机对电脑有什么影响