首页 > 编程语言 >23:Python的map函数,filter函数,reduce函数

23:Python的map函数,filter函数,reduce函数

时间:2024-08-14 17:27:53浏览次数:11  
标签:map 函数 23 res reduce ret sha num print

#map函数
#例子1
num_1=[1,2,10,5,3,7]
ret=[]
for i in num_1:
    ret.append(i**2)
print(ret)          #完成一个,

  



#例子2
num_1=[1,2,10,5,3,7]
def map_test(array):    #array,数组
    ret = []
    for i in num_1:
        ret.append(i ** 2)
    return ret
ret=map_test(num_1)    #可以完成一类
print(ret)

  



#例子3
num_1=[1,2,10,5,3,7]
# lambda x:x+1   #和add_one函数效果是一样的
def add_one(x):
    return x+1           #自增1

#lambda x:x-1        #和reduce_one函数效果是一样的
def reduce_one(x):
    return x-1              #自减1

#lambda x:x**2      #和pf函数效果是一样的
def pf(x):
    return x**2

def map_test(func,array):
    ret=[]
    for i in array:
        res=func(i)
        ret.append(res)
    return ret
print(map_test(add_one,num_1))     #把方法和参数一起传给他
print(map_test(lambda x:x+1,num_1))
print(map_test(reduce_one,num_1))
print(map_test(lambda x:x-1,num_1))
print(map_test(pf,num_1))
print(map_test(lambda x:x**2,num_1))

res=map(lambda x:x+1,num_1)  #map函数,一个是处理方法(可以是lambda,也可以是自定义的),一个是可迭代对象
print("内置函数map处理结果",res)
print(list(res))
print("自定义函数",list(map(reduce_one,num_1)))   #函数式编程,运行比较简单,可读性比较差

msg='zhugeliang'
print(list(map(lambda x:x.upper(),msg)))

  



#filter函数
#把带sha开头的都清理出去
# 1.不用函数
movie_people=['sha_guanyu','sha_zhangfei','zhaoyun',"sha_liubei"]
ret=[]
for p in movie_people:
    if not p.startswith('sha'):
        ret.append(p)
print(ret)

  



# 2.用函数的方法
movie_people=['sha_guanyu','sha_zhangfei','zhaoyun',"sha_liubei"]
def filter_test(array):
    ret = []
    for p in array:
        if not p.startswith('sha'):
            ret.append(p)
    return ret
print(filter_test(movie_people))   #filter函数

  



#3.如果sha在结尾,或者中间怎么样办?guanyu_sha
movie_people=['guanyu_sha','zhangfei_sha','zhaoyun',"liubei_sha"]
def sha_show(n):
    return n.endswith('sha')

def filter_test(func,array):
    ret = []
    for p in array:
        if not func(p):
            ret.append(p)
    return ret
res=filter_test(sha_show,movie_people)
print(res)

  



#4.用lambda
movie_people=['guanyu_sha','zhangfei_sha','zhaoyun',"liubei_sha"]

def filter_test(func,array):
    ret = []
    for p in array:
        if not func(p):
            ret.append(p)
    return ret
res=filter_test(lambda n:n.endswith('sha'),movie_people)
print(res)

  



#4.用filter函数
movie_people=['guanyu_sha','zhangfei_sha','zhaoyun',"liubei_sha"]
print(filter(lambda n:n.endswith('sha'),movie_people))
print(list(filter(lambda n:n.endswith('sha'),movie_people)))
print(list(filter(lambda n:not n.endswith('sha'),movie_people)))

  


# reduce函数
from functools import reduce

#把列表里面的所有的数都加起来
#1.方法一
num_l=[1,2,3,4,5,6,100]
res=0
for num in num_l:
    res+=num
print(res)

  



#2.用函数的形式
num_l=[1,2,3,4,5,6,100]
def reduce_test(array):
    res=0
    for num in array:
        res+=num
    return res
print(reduce_test(num_l))

  



#3.用函数的形式,算出列表里面相乘的结果
num_l=[1,2,3,100]
# def multi(x,y):
#     return x*y
# lambda x,y:x*y
def reduce_test(func,array):
    res=array.pop(0)
    for num in array:
        res=func(res,num)
    return res
print(reduce_test(lambda x,y:x*y,num_l))

  



#4.指定初始第一个值
num_l=[1,2,3,100]
def reduce_test(func,array,init=None):
    if init is None:
        res=array.pop(0)
    else:
        res=init
    for num in array:
        res=func(res,num)
    return res

print(reduce_test(lambda x,y:x*y,num_l,100))

  




#reduce函数
from functools import reduce
num_l=[1,2,3,100]
print(reduce(lambda x,y:x+y,num_l,1))
print(reduce(lambda x,y:x+y,num_l))

  



# map()
#处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样


#filter遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则留下来

people=[
    {'name':'alex','age':1000},
    {'name':'wupei','age':10000},
    {'name':'yuanhao','age':9000},
    {'name':'linhaifeng','age':18},
]
print(list(filter(lambda p:p['age']<=18,people)))

  



#reduce:处理一个序列,然后把序列进行合并操作
from functools import reduce
print(reduce(lambda x,y:x+y,range(100),100))
print(reduce(lambda x,y:x+y,range(1,101)))

  

标签:map,函数,23,res,reduce,ret,sha,num,print
From: https://www.cnblogs.com/liu-zhijun/p/18359422

相关文章

  • week日期的函数
     如下是hive的函数 selectdayofweek('2022-02-27');--dayofweek展示的是周几共计7个值,6代表周五=1selectweekofyear('2022-12-22');--51   如下为mysql的语句:SELECTWEEK(purchase_date)-WEEK('2023-11-01')+1week_of_month,--用......
  • LoadRunner常用函数介绍
    内置函数和Jmeter差不多,Jmeter更火,更好百度,毕竟开源,用的人多,所以有些函数如果不太懂用法,可以百度Jmeter作为参考来使用LR。 大家使用中应用函数不会的话留言就行,我开始用的时候反正不懂,不明白怎么使用,怎么应用,有和我一样的童鞋可交流脚本中常用函数事务组lr_start_transac......
  • 【AI 生图赢奖】用函数计算绘出「少年江湖」,与热播网剧梦幻联动
    在这个数字化时代,人工智能不再只是科幻小说中的幻想,创意与技术的界限正在被重新定义。摩拳擦掌研究AI的你,是否想用自己的新技术和创造力一试身手呢?阿里云联合优酷推出【少年白马醉春风·AI江湖创作大赛】,无论您是开发者、设计师、还是AI绘画爱好者,都可以使用阿里云函数计......
  • 基于django+vue基于微信小程序的垃圾分类系统演示录像22023【开题报告+程序+论文】计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在环境保护意识日益增强的今天,垃圾分类作为促进资源循环利用、减少环境污染的关键举措,受到了社会各界的广泛关注。然而,垃圾分类知识的普及......
  • 基于django+vue基于微信小程序的垃圾分类系统演示录像12023【开题报告+程序+论文】计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,生活垃圾产量急剧增加,垃圾分类已成为城市管理和环境保护的重要议题。然而,传统的垃圾分类方式存在效率低、准确性差、......
  • ConcurrentHashMap源码阅读
    finalVputVal(Kkey,Vvalue,booleanonlyIfAbsent){if(key==null||value==null)thrownewNullPointerException();inthash=spread(key.hashCode());intbinCount=0;for(Node<K,V>[]tab=table;;){Node<K,V>......
  • 【ACM出版,往届会后三个半月EI见刊/检索】第四届物联网与机器学习国际学术会议(IoTML 20
    2024年第四届物联网与机器学习国际学术会议(IoTML2024)将于2024年8月23-25日在中国南昌召开。会议将围绕着物联网和机器学习开展,探讨本领域发展所面临的关键性挑战问题和研究方向,以期推动该领域理论、技术在高校和企业的发展和应用,为专注于该研究领域的创新学者、工程师和......
  • TreeMapTest1
    packagecom.shujia.day15;importjava.util.Map;importjava.util.Set;importjava.util.TreeMap;/*"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)*/publicclassTreeMapTest1{publicstaticvoidmain(String[]args)......
  • HashMap和Hashtable的区别 day15
    /*Map:存储元素的特点是每一个元素是一个键值对{【name:"魏一民"】,【age:18】}Map集合的共同拥有的特点:1、Map集合中的元素,键是唯一的,不会在一个Map集合发现两个相同的键1001:魏一民1002:陈真1001:小虎2......
  • Leetcode 234.回文链表
    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false提示:链表中节点数目在范围[1,105] 内0<=Node.val<=9进阶:你能否用 O(n) 时间复杂......