Python 内置函数 -- zip(), sorted(), filter()和map()
内置函数
1. zip() 打包(木桶效应)
描述: zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素打包成一个个元组, 然后返回由这些元组组成的列表
语法: zip([iterable, ...])
参数: iterable -- 一个或多个迭代器
返回值: 返回可迭代对象
# 实例:
lst1 = ["中国", "美国", "俄罗斯", "日本"]
lst2 = ["北京", "华盛顿", "莫斯科"]
lst3 = ["烤鸭", "炸鸡", "黄油+面包", "寿司"]
lst = zip(lst1, lst2, lst3) # 合并列表, 返回可迭代对象, 水桶效应
print(lst)
print(list(lst))
print("__iter__" in dir(lst))
输出结果:
<zip object at 0x0000005E0A4DCEC8>
[('中国', '北京', '烤鸭'), ('美国', '华盛顿', '炸鸡'), ('俄罗斯', '莫斯科', '黄油+面包')]
True 需要注意的是:
(1)zip()函数具有水桶效应
(2)zip()函数返回的是一个迭代器, 直接打印zip()函数的结果是一个内存地址 2. sorted() 排序
执行流程: 把可迭代对象iterable中的每一个元素拿出来, 放到func中运行, 返回一个数字, 根据数字进行排序
描述: sorted() 函数对所有可迭代的对象进行排序操作
语法: sorted(iterable, key=func, reverse=True/False)
参数说明: iterable -- 可迭代对象
func -- 排序规则
reverse=True表示降序排列, reverse=False表示升序排列
返回值: 返回排序后的列表 实例1:
lst = ["王乃卉", "刘能", "赵四", "王大拿", "范伟", "沈腾"]
lst1 = sorted(lst, key=lambda name: len(name) % 3)
print(lst1)
输出结果:
['王乃卉', '王大拿', '刘能', '赵四', '范伟', '沈腾'] 实例2:按照年龄对学⽣信息进行排序
lst = [
{"id": 1, "name": 'alex', "age": 18},
{"id": 2, "name": 'wusir', "age": 16},
{"id": 3, "name": 'taibai', "age": 17},
] l2 = sorted(lst, key=func)
print(l2)
l3 = sorted(lst, key=lambda dic: dic['age'])
l4 = sorted(lst, key=lambda dic: len(dic['name']))
l5 = sorted(lst, key=lambda dic: ascii(dic['name'][0]))
print(l5)
sorted()函数最大的优点是可以按照自己的规则(自己定义的函数)来排序 3. filter() 筛选
执行流程: 把可迭代对象中的每一个元素拿出来, 放到func中运行, 返回True或False, 根据返回的True和False来决定这个元素是否保留
描述: filter() 函数用于过滤序列, 过滤掉不符合条件的元素, 返回由符合条件的元素组成的迭代器
语法: filter(function, iterable)
参数: function -- 判断函数
iterable -- 可迭代对象
返回值: 返回迭代器
注意: filter()的作用是筛选,所以function的功能是判断 实例:
(本题会用到lambda匿名函数, 如果不了解请点击这里)
lst = [23, 28, 15, 27, 24, 22]
f = filter(lambda age: age > 18 and age % 2 == 0, lst)
print(list(f)) # 要把返回的迭代器转换成列表才能打印出来
4. map() 映射
执行流程: 把可迭代对象中的每一个元素拿出来, 放到func中运行, 返回数据就是结果
描述: map()会根据提供的函数对指定序列做映射
语法: map(function, iterable, ...)
参数: function -- 函数
iterable -- 一个或多个序列
返回值: 返回迭代器
注意: map()的作用是映射,所以function的功能是作为对应法则输出目标值 实例1:
lst = [1,5,9,3]
m = map(lambda x: x**2, lst)
print(list(m))
输出结果:
[1, 25, 81, 9] 实例2:计算两个列表相同位置的数据的和
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 内置函数 -- zip(), sorted(), filter()和map()的更多相关文章
- python内置函数lambda、filter、map、reduce
lambda匿名函数 1.lambda只是一个表达式,函数体比def简单多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去 3.lambda函数 ...
- python 内置函数zip,map,三元,lambda表达式
#内置函数zip(),将多个可迭代对象(集合等)按照顺序进行组合成tuple元祖,放在zip 对象进行存储,: #当参数为空时候,返回空 #如果 zip() 函数压缩的两个列表长度不相等,那么 zip ...
- python之内置函数(lambda,sorted,filter,map),递归,二分法
一.lambda匿名函数 为了解决一些简单需求而设计的一句话函数,lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数. 语法: 函数名 = lambda 参数 : 返回值 ...
- 内置函数 lambda sorted filter map 递归
一 lambda 匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算 n 的 n次方 def func(n): return n**n print(func(10)) f = lambda ...
- python内置函数:sorted中的参数key
x.sort和sorted函数中参数key的使用 介绍 python中,列表自带了排序函数sort >>> l = [1, 3, 2] >>> l.sort() & ...
- python内置函数zip
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以 ...
- 内置函数之sorted,filter,map
# 4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb # name=['oldboy','alex','wusir'] # print(list(map(lambda i:i ...
- Python内置函数(37)——sorted
英文文档: sorted(iterable[, key][, reverse]) Return a new sorted list from the items in iterable. Has tw ...
- Python内置函数(59)——sorted
英文文档: sorted(iterable[, key][, reverse]) Return a new sorted list from the items in iterable. Has tw ...
随机推荐
- 五分钟彻底搞懂你一直没明白的Linux内存管理
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的.对于内存部分需要知道: 地址映射 内存管理的方式 缺页异常 先来看一些基本的知识,在进程看来,内 ...
- 通过自动回复机器人学Mybatis---基础版
第1章 案例简介 介绍要实现的案例情况,后面会通过这个案例来学习 Mybatis 第2章 实战第一部----黎明前的黑暗 在没有 Mybatis 的情况下,使用 Jsp + Servlet + Jdb ...
- python_函数参数
1.参数的基本知识 任意个数 任意类型 def func(a1,a2,a3): print(a1,a2,a3) # 参数可以是任意个数和任意类型 func(1,'waf',True) 2.位置传参数( ...
- 一段有关线搜索的从python到matlab的代码
在Udacity上很多关于机器学习的课程几乎都是基于python语言的,博主“ttang”的博文“重新发现梯度下降法——backtracking line search”里对回溯线搜索的算法实现也是用 ...
- summernote 富文本编辑器限制输入字符长度
项目中需要一个比较简单的富文本编辑器,于是选中了summernote .虽然比较轻量,但是在开发中也遇到了几个问题,在此记录一下. 1:样式和bootstrap冲突,初始化之后显示为: .note-e ...
- IDEA中配置Jetty Server
首先去 Eclipse官网下载Jetty jar包 鼠标移到Jetty上时 点击 Git it (得到它) 点击 .zip等待下载完成 然后 解压出来 接下就让我们 开始 使用IDEA了(创建一个We ...
- ubuntu nginx 启动多个Django项目
1.将 /etc/nginx/sites-enabled/ 目录下的nginx默认配置文件default,重命名,例如:default1 2.给每个Django项目添加nginx.conf配置文件,建 ...
- 洛谷P1372 又是毕业季I【数论】
题目:https://www.luogu.org/problemnew/show/P1372 题意: 在1~n之中找k个数,使得他们的最大公因数最大. 思路: 假设ans是答案,说明选择的k个数分别是 ...
- 记录 vant Picker 选择器,实现三级联动,传对应省市区code值
最近使用vant UI写移动端,感觉还不错 功能挺全的,带的还有省市区三级联动. 但是 突然遇到一个 产品要传的 省市区的code码,还和vant的 邮编不一样,我*****. 看了一下vant UI ...
- 2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
回形遍历( calc .cpp/c/pas) 时间限制:1s内存 限制: 256MB [问题 描 述] 给出一个 n*m 的棋盘,按如下方式遍历,请问(x,y)往后 z 步走到的是哪个格子. [输入] ...