Python内建函数二
内置函数二:
1.lambda (匿名函数)
为了解决一些简答的需求而设计的一句话函数。不需要def来声明。
def func(n):
return n*n
print(func(10))#
f = lambda n: n*n
print(f(10))#
注意:
语法:函数名 = lambda 参数:返回值
1.函数的参数可以有多个。多个参数之间用逗号隔开。
2.匿名函数不管多复杂,只能写一行,且逻辑结束后直接返回数据
3.返回值和正常的函数一样,可以是任意数据类型。
匿名函数并不是说一定没有名字,这里前面的变量就是一个函数名,说他是匿名原有
是我们通过__name__查看的时候咩有名字的,统一都叫做lambda。在调用的时候
没有什么特别之处。像正常的函数调用。
2.sorted (排序函数)
语法:soret(Iterable,key=None,reverse=False)
Iterable:可迭代对象
key:排序规则(排序函数),在soret内部会将可迭代对象中的每一个元素
传递给这个函数的参数,根据函数运算的结果进行排序。
recerse:是否是倒序。True:倒序,False:正序。
<1>
lst = [1,5,3,4,6]
lst2 = sorted(lst)
print(lst) # 原列表不会改变
print(lst2) # 返回的新列表是经过排序的
结果:
[1, 5, 3, 4, 6]
[1, 3, 4, 5, 6]
<2>
dic = {1:'A', 3:'C', 2:'B'}
print(sorted(dic)) # 如果是字典. 则返回排序过后的key
结果:
[1, 2, 3]
<3>
# 根据字符串长度进行排序
lst = ["哈哈", "我爱你", "中国", "亲爱的母亲"]
# 计算字符串串长度
def func(s):
return len(s)
print(sorted(lst, key=func))
结果:
['哈哈', '中国', '我爱你', '亲爱的母亲']
<4>
# 根据字符串长度进行排序
lst = ["哈哈", "我爱你", "中国", "亲爱的母亲"]
# 计算字符串长度
print(sorted(lst, key=lambda s: len(s)))
结果:
['哈哈', '中国', '我爱你', '亲爱的母亲']
<5>
lst = [{"id":1, "name":'a', "age":18},
{"id":2, "name":'b', "age":16},
{"id":3, "name":'c', "age":17}]
# 按照年龄对学生信息进行排序
print(sorted(lst, key=lambda e: e['age']))
结果:
[{'id': 2, 'name': 'b', 'age': 16}, {'id': 3, 'name': 'c', 'age': 17}, {'id': 1, 'name': 'a', 'age': 18}]
3.filter (筛选函数)
语法:filter(function,Iterable)
function:用来筛选的函数,在filter中会自动的把iteratable中的元素传递给function
然后根据function返回True或者False来判断是否保留此数据。
Iterable:可迭代对象
例子:
lis = [
{'id': 1, 'age':30},
{'id': 2, 'age':40},
{'id': 3, 'age':20},
{'id': 4, 'age':40}
]
ll = filter(lambda dic: dic['age'] >= 40,lis)#返回一个迭代器
print(list(ll))#[{'id': 2, 'age': 40}, {'id': 4, 'age': 40}]
4.map (映射函数)
语法:map(function,Iterable)
可以根据可迭代对象中的每一个元素进行映射。分别去执行function
例子:
<1>
#计算列表中每个元素的平方 ,返回新列列表
def func(e):
return e*e
mp = map(func, [1, 2, 3, 4, 5])
print(mp)
print(list(mp))
结果:
<map object at 0x1037503c8>
[1, 4, 9, 16, 25]
<2>
#改写成lambda
print(list(map(lambda x: x * x, [1, 2, 3, 4, 5])))
结果:
[1, 4, 9, 16, 25]
<3>
# 计算两个列表相同位置的数据的和
lst1 = [1, 2, 3, 4, 5]
lst2 = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x+y, lst1, lst2)))
结果:
[3, 6, 9, 12, 15]
Python内建函数二的更多相关文章
- python 内建函数 filter,map和reduce
python 内建函数 filter,map和reduce, 三个函数比较类似,都是应用于序列的内置函数,常见的序列包括list.tuple.str等.而且三个函数都可以和lambda表达式结合使用. ...
- python 内建函数setattr() getattr()
python 内建函数setattr() getattr() setattr(object,name,value): 作用:设置object的名称为name(type:string)的属性的属性值为v ...
- Python 基础 二
Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...
- 初学Python(二)——数组
初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- 有关python下二维码识别用法及识别率对比分析
最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- 从Scratch到Python——Python生成二维码
# Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...
- Python内建函数-callable
Python内建函数-callable callable(object) 中文说明:检查对象object是否可调用.如果返回True,object仍然可能调用失败:但如果返回False,调用对象ojb ...
随机推荐
- C# winform控件之PictureBox详解
PictureBox表示用于显示图像的 Windows 图片框控件https://msdn.microsoft.com/zh-cn/library/system.windows.forms.pictu ...
- hdu 6103(Kirinriki)
题目链接:Kirinriki 题目描述: 找两个不重叠的字符串A,B. 使得dis(A,B)<=m;\(dis(A,B)= \sum _{i=0}^{n-1} \left | A_i-B_{n- ...
- exec 和 spawn 的区别
参考资料: difference-between-spawn-and-exec-of-node-js-child_process process_child 最近在用nodejs 的child_pro ...
- Python: scikit-image binary descriptor
这个用例说明 BRIEF binary description algorithm from skimage import data from skimage import transform as ...
- Data Grip 使用--->创建数据库连接
1. 简介 Data Grip 是一款类似于Workbench的数据库设计工具,可以用来对常用的数据管理系统(MySQL/Oracle/Postgresql...)进行操作. 2. 利用DataG ...
- 47: error: undefined reference to `QWebView::QWebView(QWidget*)'
QT 5.6版本 用Qt界面设计器打开界面文件,在界面上托入QWebView控件,这时运行会出现错误,错误如下: ......... undefined reference to `QWebView ...
- linux svn 客户端基本使用命令
1.从svn获取项目 svn co URL --username XX --password XX; 2.添加code file svn add codeFile; svn ci -m "c ...
- React库protypes属性
Prop 验证 随着应用不断变大,保证组件被正确使用变得非常有用.为此我们引入propTypes.React.PropTypes 提供很多验证器 (validator) 来验证传入数据的有效性.当向 ...
- day1 java基础回顾-多线程
启动线程方式 方式一:继承Thread. 1. 自定义一个类继承Thread类. 2. 重写Thread的run方法,把自定义线程的任务代码定义在run方法上. 3. 创建Thread子类的对象,并且 ...
- adt eclipse 配置问题 error:could not open ...jvm.cfg
在安装adt eclipse后,打开eclipse提示error:could not open eclipse\jre\lib\amd64\jvm.cfg 据网上显示原因应该是以前安装过java,然后 ...