Python 内置函数&filter()&map()&reduce()&sorted()
常用内置函数
Python 2.x 返回列表,Python 3.x 返回迭代器
在进行筛选或映射时,输出的结果是一个数组,需要list帮助.
如:print(list(map(lambda x:x+1, [1,2,3])))
一、filter() ——过滤、筛选
刚接触filter时 ,运行总是出现<filter object at 0x000001B68F052828> 得不到想要的数据,后来发现是因为filter的结果是一个数组, 需要 list 帮助,后来将print(f) 改为 print(list(f)) 能成功运行
语法: filter(function,iterable)
function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据
iterable:可迭代对象
lst = [{'id':1,'name':'alex','age':18},
{'id':1,'name':'wusir','age':17},
{'id':1,'name':'taibai','age':16},
]
ls = filter(lambda e:e['age'] > 16,lst)
print(list(ls))
结果:
[{'id': 1, 'name': 'alex', 'age': 18},
{'id': 1, 'name': 'wusir', 'age': 17}]
二、map() ——映射函数
语法: map(function,iterable)
对可迭代对象中的每一个元素执行相同函数功能的操作
function:它是一个功能函数,可以是lambda函数,也可以是def函数,它所做的操作是对每一个元素执行相同函数功能的操作
iterable:可迭代对象,也可理解为一个或多个序列,序列中是每一个要操作的元素对象
注意:map函数不改变原有的序列,而是返回一个新的序列
以下实例是使用lambda函数和结合函数使用的不同写法:
lis = [1, 2, 3, 4, 5]
lis1 = []
for i in lis:
def square(x): # 计算平方数
return x ** 2
a = square(i)
lis1.append(a)
print(lis1)
结果:[1, 4, 9, 16, 25]
def square(x): # 计算平方数
return x ** 2
a = map(square, [1, 2, 3, 4, 5]) # 计算列表各个元素的平方
print(list(a))
结果:[1, 4, 9, 16, 25]
a = map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函
print(list(a))
结果:[1, 4, 9, 16, 25]
三、reduce() ——累计算
在Python2.x版本中recude是直接 import就可以的, Python3.x版本中需要从functools这个包中导入
语法:reduce(function,iterable)
reduce是先把列表中的前俩个元素取出计算出一个值,然后临时保存,接下来用这个临时保存的值和列表中第三个元素进行计算,求出一个新的值将最开始临时保存的值覆盖掉,依次类推,得到最终的累计和,并返回
这两个参数必须都要有,缺一个不行
注意:我们放进去的可迭代对象没有更改
from functools import reduce
def func(x,y):
return x + y
ret = reduce(func,[3,4,5,6,7])
print(ret)
结果:25
匿名函数版
from functools import reduce
l = reduce(lambda x,y:x*10+y,[1,2,3,4])
print(l)
结果:1234
# x = 1,y = 2 12
# x = 12,y = 3 123
# x = 123,y = 4 1234
累计加
from functools import reduce
lis = [1, 2, 3, 4]
result = reduce(lambda x, y: x+y, lis)
print(result)
结果:10
统计出现的次数
from functools import reduce
str1 = "fufhfjhjfurfh"
b =reduce(lambda a,x:a+x.count("f"),str1,0) # 0是从0算起
print(b)
结果:5
from functools import reduce
str1 = "fufhfjhjfurfh"
b =reduce(lambda a,x:a+x.count("f"),str1,1) # 1是从1算起
print(b)
结果:6
四、sorted() ——排序
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
sort 方法是对已经存在的列表进行操作,无返回值,sorted 方法不是在原来的基础上进行的操作的,返回的是一个新的 list
语法:sorted(iterable, cmp=None, key=None, reverse=False)
iterable:可迭代对象
cmp :比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse:排序规则,reverse = True 降序 , reverse = False 升序(默认)
实例
a = [5, 7, 6, 3, 4, 1, 2]
b = sorted(a) # 保留原列表
print(b)
lis = [('b', 2), ('a', 1), ('c', 3), ('d', 4)]
b = sorted(lis, key=lambda x: x[1]) # 利用key
print(b)
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
b = sorted(students, key=lambda s: s[2]) # 按年龄排序
print(b)
b = sorted(students, key=lambda s: s[2], reverse=True) # 按降序
print(b)
结果:[1, 2, 3, 4, 5, 6, 7]
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
只需了解
一、max() —— 求最大值
实例:
print(max([1,2,3])) # 返回此序列最大值
可以在main函数加key索引
ret = max([1,2,-5,],key=abs) # 按照绝对值的大小,返回此序列最小值
print(ret)
# 加key是可以加函数名,min自动会获取传入函数中的参数的每个元素,然后通过你设定的返回值比较大小,返回最大的传入的那个参数。
print(max(1,2,-5,6,-3,key=lambda x:abs(x))) # 可以设置很多参数比较大小
dic = {'a':3,'b':2,'c':1}
print(max(dic,key=lambda x:dic[x]))
# x为dic的key,lambda的返回值(即dic的值进行比较)返回最大的值对应的键
二、min() ——求最小值
实例:
print(min([1,2,3])) # 返回此序列最小值
可以在main函数加key索引
ret = min([1,2,-5,],key=abs) # 按照绝对值的大小,返回此序列最小值
print(ret)
# 加key是可以加函数名,min自动会获取传入函数中的参数的每个元素,然后通过你设定的返回值比较大小,返回最小的传入的那个参数。
print(min(1,2,-5,6,-3,key=lambda x:abs(x))) # 可以设置很多参数比较大小
dic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))
# x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键
Python 内置函数&filter()&map()&reduce()&sorted()的更多相关文章
- Python内置函数filter, map, reduce
filter.map.reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车. 1. filter函数的功能相当 ...
- python关于list的三个内置函数filter(), map(), reduce()
''' Python --version :Python 2.7.11 Quote : https://docs.python.org/2/tutorial/datastructures.html#m ...
- [py][lc]python高阶函数(匿名/map/reduce/sorted)
匿名函数 - 传入列表 f = lambda x: x[2] print(f([1, 2, 3])) # x = [1,2,3] map使用 传入函数体 def f(x): return x*x r ...
- python 内置函数zip,map,三元,lambda表达式
#内置函数zip(),将多个可迭代对象(集合等)按照顺序进行组合成tuple元祖,放在zip 对象进行存储,: #当参数为空时候,返回空 #如果 zip() 函数压缩的两个列表长度不相等,那么 zip ...
- Python内置函数(34)——map
英文文档: map(function, iterable, ...) Return an iterator that applies function to every item of iterabl ...
- Python内置函数(40)——map
英文文档: map(function, iterable, ...) Return an iterator that applies function to every item of iterabl ...
- [python基础知识]python内置函数map/reduce/filter
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
- python内置函数lambda、filter、map、reduce
lambda匿名函数 1.lambda只是一个表达式,函数体比def简单多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去 3.lambda函数 ...
- Python内置函数之filter map reduce
Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...
随机推荐
- UVA 212 Use of Hospital Facilities
题目链接:https://vjudge.net/problem/UVA-212 题意摘自<算法禁赛入门经典> 题目大意 医院里有 N(N ≤ 10)个手术室和 M(M ≤ 30)个恢复室. ...
- Django框架(三十)—— 使用Vue搭建前台
目录 vue的使用 一.创建vue项目 二.pycharm开发vue项目 1.安装vue.js插件 2.运行vue项目 三.vue项目的目录结构 四.vue的使用 1.创建新的组件 2.显示数据 3. ...
- 【Linux】- CentOS7安装java运行环境
centos7中安装java环境,在安装前先查看有无安装过java环境.直接运行java命令,会提示命令未找到,则是没有安装过java环境. 1.检查 也可以通过rpm命令查看: rpm -qa |g ...
- pyhon if分支
在python中,最常用的就是if判断,if判断可以分为单次判断和多次判断 单次判断 if 条件 : (条件成立执行我) else:(else也可以没有,最近的else对应最近的if语句) (条件 ...
- docker--环境搭建
我的电脑是win10,虽然现在win10开始也支持docker,但在linux机器会合适些,所以我先用VMware创建一个linux虚拟机--Centos7 安装虚拟机不多说,现在开始安装docker ...
- CTF中的AWD套路
今年参加了三起CTF比赛,属于初学者,基本除了web其他的不会,但分赛场AWD相对就没什么难度,基本都是技巧性.其中一场进入复赛了,本月底再次比赛(ctf题做的这么渣还能进也是绝了~),参照前人经验补 ...
- Chrome不支持css字体小于12px的解决办法
我们先来看个效果图(chrome下): 从上面的图可以很明显地看出Chrome下css设置字体大小为12px及以下时,显示的都是一样大小,都是默认12px: 那么网上有一个方法就是给当前样式添加Chr ...
- 关于PCB的Mark点
关于PCB的Mark PCB板子做好后,需要贴装元器件,现在元器件的贴装都是通过机器来完成的(SMT).SMT中会用到mark点. 一.什么是Mark点 Mark点也叫基准点或者光学定位点,为贴装工艺 ...
- RestTemplate java.net.UnknownHostException
背景:公司内部系统的架构升级准备用微服务一套:记录遇到的坑. 错误信息: Servlet.service() for servlet [dispatcherServlet] in context wi ...
- PHP-全排列
给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] ...