day17—max, map, reduce, filter, zip 函数的使用
一、max 函数
l=[3,2,100,999,213,1111,31121,333]
print(max(l)) # dic={'k1':10,'k2':100,'k3':30} print(max(dic)) # k3 最大的key
print(max(dic,key=lambda k:dic[k])) # k2 最大值对应的key print(dic[max(dic,key=lambda k:dic[k])]) # 100 最大值
print(max(dic.values())) # 100 最大值
二、map 函数
array = [1,2,3,67,8]
print(list(map(lambda x:x-1,array))) # [0, 1, 2, 66, 7]
#用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sb
name=['alex','wupeiqi','yuanhao']
print(list(map(lambda x:x+'_sb',name))) # ['alex_sb', 'wupeiqi_sb', 'yuanhao_sb'] res=map(lambda x:x+'_sb',name)
for i in res:
print(i) # alex_sb
# wupeiqi_sb
# yuanhao_sb
三、reduce 函数
from functools import reduce array = [1,2,3,4] print(reduce(lambda x,y:x*y,array)) # 24————1*2*3*4
print(reduce(lambda x,y:x*y,array,50)) # 1200————50*1*2*3*4,50是初始值 #**************************************************
#等同于
def reduce_test(func,array,init=None):
l=list(array)
if init is None:
res=l.pop(0)
else:
res=init
for i in l:
res=func(res,i)
return res print(reduce_test(lambda x,y:x*y,array))
print(reduce_test(lambda x,y:x*y,array,50))
#reduce用来计算1到100的和
from functools import reduce print(reduce(lambda x,y:x+y,range(100),100)) # 5050
print(reduce(lambda x,y:x+y,range(1,101))) # 5050
四、filter() 函数
#电影院聚集了一群看电影bb的傻逼,让我们找出他们
movie_people=['alex','wupeiqi','yuanhao','sb_alex','sb_wupeiqi','sb_yuanhao'] def tell_sb(x):
return x.startswith('sb') def filter_test(func,array):
ret=[]
for i in array:
if func(i):
ret.append(i)
return ret print(filter_test(tell_sb,movie_people)) # ['sb_alex', 'sb_wupeiqi', 'sb_yuanhao'] #或者用filter(),返回可迭代对象***************************************
print(list(filter(lambda x:x.startswith('sb'),movie_people))) # ['sb_alex', 'sb_wupeiqi', 'sb_yuanhao']
#利用filter过滤掉千年王八,万年龟,还有一个九千岁
name_dic=[
{'name':'alex','age':1000},
{'name':'wupeiqi','age':10000},
{'name':'yuanhao','age':9000},
{'name':'linhaifeng','age':18},
] def func(x):
age_list=[1000,10000,9000]
return x['age'] not in age_list res=filter(func,name_dic)
for i in res:
print(i) # {'name': 'linhaifeng', 'age': 18} print(filter(func,name_dic)) # <filter object at 0x00000000010FA748>
print(list(filter(func,name_dic))) # [{'name': 'linhaifeng', 'age': 18}]
五、zip 函数
#字典的运算:最小值,最大值,排序
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
} #迭代字典,取得是key,因而比较的是key的最大和最小值
print(max(salaries)) # yuanhao
print(min(salaries)) # alex #可以取values,来比较
print(max(salaries.values())) #
print(min(salaries.values())) # #但通常我们都是想取出,工资最高的那个人名,即比较的是salaries的值,得到的是键
print(max(salaries,key=lambda k:salaries[k])) # alex
print(min(salaries,key=lambda k:salaries[k])) # yuanhao #也可以通过zip的方式实现
salaries_and_names=zip(salaries.values(),salaries.keys()) #先比较值,值相同则比较键
print(max(salaries_and_names)) # (100000000, 'alex') #salaries_and_names是迭代器,因而只能访问一次
print(min(salaries_and_names)) #Traceback (most recent call last):
#ValueError: min() arg is an empty sequence
day17—max, map, reduce, filter, zip 函数的使用的更多相关文章
- python中lambda,map,reduce,filter,zip函数
函数式编程 函数式编程(Functional Programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.简单来讲,函 ...
- Python map/reduce/filter/sorted函数以及匿名函数
1. map() 函数的功能: map(f, [x1,x2,x3]) = [f(x1), f(x2), f(x3)] def f(x): return x*x a = map(f, [1, 2, 3, ...
- python3 匿名函数,map/reduce/filter等函数结合应用
匿名函数就是不需要显式的指定函数 # 平方函数 def func1(x): return x**2 print(func1) # 平方函数匿名函数写法 func2=lambda x:x**2 prin ...
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- [python基础知识]python内置函数map/reduce/filter
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
- Python学习:函数式编程(lambda, map() ,reduce() ,filter())
1. lambda: Python 支持用lambda对简单的功能定义“行内函数” 2.map() : 3.reduce() : 4.filter() : map() ,reduce() , filt ...
- map/reduce/filter/lambda
Python内建了map()/reduce()/filter()函数. map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的It ...
- python 函数式编程之lambda( ), map( ), reduce( ), filter( )
lambda( ), map( ), reduce( ), filter( ) 1. lambda( )主要用于“行内函数”: f = lambda x : x + 2 #定义函数f(x)=x+2 g ...
- Python-函数式编程-map reduce filter lambda 三元表达式 闭包
lambda 匿名函数,核心是作为算子,处理逻辑只有一行但具有函数的特性,核心用于函数式编程中 三元运算符 其实本质上是if分支的简化版,满足条件返回 if 前面的值,不满足条件返回 else后面的值 ...
随机推荐
- Beta冲刺——代码规范与计划
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.代码规范 采用ShowDoc网站进行编 ...
- ASP.NET MVC 数据传递进阶 从数据库拿到数据后的三种方式
目录 回顾 数据 显示 因为这个小练习有EF的一些东西,我们来回顾一下. 一.回顾 回顾一点EF的知识怎么生成数据库模型. 1.首先我们在Models文件夹右键添加新建项,在数据分栏下有ADO.NET ...
- Java实现 LeetCode 592 分数加减运算(纯体力活)
592. 分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数 ...
- Java实现 LeetCode 424 替换后的最长重复字符
424. 替换后的最长重复字符 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意: 字 ...
- Java实现 LeetCode 300 最长上升子序列
300. 最长上升子序列 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,10 ...
- Java实现 蓝桥杯VIP 算法提高 身份证排序
算法提高 身份证排序 时间限制:1.0s 内存限制:256.0MB 问题描述 安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序.身 ...
- 第五届蓝桥杯JavaA组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜年龄 题目描述 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍" ...
- Java实现 蓝桥杯 算法提高金属采集
问题描述 人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了.一些节点之间有道路相连,所有的节点和道路形成了一棵树.一共有 n 个节点,这些节点被编号为 1~n .人类将 ...
- java实现第四届蓝桥杯连号区间数
连号区间数 题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R ...
- 用js实现简单的抛物线运动
前言 老早就看过一些购物车的抛物线效果,也想自己凑热闹动手来实现一遍. 然后(lll¬ω¬) 书到用时方恨少,发现高中学到物理啊.数学啊,都忘光了,抛物线公式都忘了0 0. 顺手百度一波,从百度可知: ...