常用内置函数

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()的更多相关文章

  1. Python内置函数filter, map, reduce

    filter.map.reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车. 1. filter函数的功能相当 ...

  2. python关于list的三个内置函数filter(), map(), reduce()

    ''' Python --version :Python 2.7.11 Quote : https://docs.python.org/2/tutorial/datastructures.html#m ...

  3. [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 ...

  4. python 内置函数zip,map,三元,lambda表达式

    #内置函数zip(),将多个可迭代对象(集合等)按照顺序进行组合成tuple元祖,放在zip 对象进行存储,: #当参数为空时候,返回空 #如果 zip() 函数压缩的两个列表长度不相等,那么 zip ...

  5. Python内置函数(34)——map

    英文文档: map(function, iterable, ...) Return an iterator that applies function to every item of iterabl ...

  6. Python内置函数(40)——map

    英文文档: map(function, iterable, ...) Return an iterator that applies function to every item of iterabl ...

  7. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

  8. python内置函数lambda、filter、map、reduce

    lambda匿名函数 1.lambda只是一个表达式,函数体比def简单多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去 3.lambda函数 ...

  9. Python内置函数之filter map reduce

    Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...

随机推荐

  1. QT的三种开发方式

    最近在学习QT GUI,单纯使用C++硬编码的方式,直接是采用QWidget部件来做,而不是采用QT Designer做UI界面,也不是采用QML+Javascript.单纯使用C++硬编码的方式,缺 ...

  2. editplus 正则表达式 分组替换

    editplus :zz正则表达式替换 /开头的api+换行符 替换为   /开头的api+空格 \1后有空格 editplus :zz正则表达式替换 行首两个数字+换行符 替换为  行首两个数字+空 ...

  3. 转 笔记本无线和有线的MAC地址修改

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueqiang03/article/details/80741734无线网卡的mac地址在出厂时就被 ...

  4. yum安装LAMP

    安装LAMP环境二进制包安装,先更新yum源,PHP 7.0.33 扩展可选 yum -y install mysql mysql-server mysql-devel httpd httpd-dev ...

  5. 一步一步学Vue(六)https://www.cnblogs.com/Johnzhang/p/7242640.html

    一步一步学Vue(六):https://www.cnblogs.com/Johnzhang/p/7237065.html  路由 一步一步学Vue(七):https://www.cnblogs.com ...

  6. [已解决]报错: Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

    问题: windows下安装Redis第一次启动报错: [2368] 21 Apr 02:57:05.611 # Creating Server TCP listening socket 127.0. ...

  7. sed以及awk

    一.sed sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的 内容,处理完成后,把缓 ...

  8. case ...esac判断 function方法 循环loop,while do done,until do done

    就类似于其他语言中的case语句 用法 要点 第一 开始结束  case  esac 正好相反 第二  每段程序段需要用  两个:号结束. 例: } in "hello") ech ...

  9. 【Luogu】【关卡2-7】深度优先搜索(2017年10月)【AK】【题解没写完】

    任务说明:搜索可以穷举各种情况.很多题目都可以用搜索完成.就算不能,搜索也是骗分神器. P1219 八皇后 直接dfs.对角线怎么判断:同一条对角线的横纵坐标的和或者差相同. #include < ...

  10. vue 学习八 自定义指令

    vue指令注册有两种方式 1 全局注册 在main.js中 使用vue.directive Vue.directive('alert_w', { inserted(el,bin,vn) { conso ...