Python内置函数 -- zip(), sorted(), filter()和map()

本文引用自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表示升序排列
返回值: 返回排序后的列表

lst = ["王乃卉", "刘能", "赵四", "王大拿", "范伟", "沈腾"]
lst1 = sorted(lst, key=lambda name: len(name) % 3)
print(lst1)

输出结果:
[‘王乃卉’, ‘王大拿’, ‘刘能’, ‘赵四’, ‘范伟’, ‘沈腾’]

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))      # 要把返回的迭代器转换成列表才能打印出来

输出结果:
[28, 24, 22]

4、map() 映射

执行流程: 把可迭代对象中的每一个元素拿出来, 放到func中运行, 返回数据就是结果
描述: map()会根据提供的函数对指定序列做映射
语法: map(function, iterable, …)
参数: function – 函数
iterable – 一个或多个序列
返回值: 返回迭代器
注意: map()的作用是映射,所以function的功能是作为对应法则输出目标值

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]

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cofisher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值