python--sorted、filter、map
sorted
排序函数.
- 语法: sorted(Iterable, key=None, reverse=False)
- Iterable: 可迭代对象
- key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数. 根据函数运算的结果进行排序
- reverse: 是否是倒序. True: 倒序, False: 正序
lst = [5, 7, 6, 12, 1, 13, 9, 18, 5] lst.sort() # sort是list里面的一个方法 print(lst)
结果:
[1, 5, 5, 6, 7, 9, 12, 13, 18]
倒序在排下
lst = [5, 7, 6, 12, 1, 13, 9, 18, 5] ll = sorted(lst, reverse=True) # 内置函数. 返回给你一个新列表 新列表是被排序的 print(ll)
结果:
[18, 13, 12, 9, 7, 6, 5, 5, 1]
给列表排序. 根据字符串的长度进行排序
lst = ["大阳哥", "尼古拉斯", "赵四", "刘能", "广坤", "谢大脚"] def func(s): return len(s) # 返回数字 ll = sorted(lst, key=lambda s: len(s)) # lambda函数等价于上面的func函数 print(ll)
结果:
['赵四', '刘能', '广坤', '大阳哥', '谢大脚', '尼古拉斯']
ll = sorted(lst, key=lambda s:s.count('a')) # 内部. 把可迭代对象中的每一个元素传递给func
lst = [ {'id': 1, 'name': '张三', 'age': 18}, {'id': 2, 'name': '李四', 'age': 58}, {'id': 3, 'name': '王五', 'age': 38}, {'id': 4, 'name': '赵六', 'age': 48}, {'id': 5, 'name': '女神', 'age': 18} ] ll = sorted(lst, key=lambda dic: dic['age'], reverse=True) print(ll)
结果:
[{'id': 2, 'name': '李四', 'age': 58}, {'id': 4, 'name': '赵六', 'age': 48}, {'id': 3, 'name': '王五', 'age': 38}, {'id': 1, 'name': '张三', 'age': 18}, {'id': 5, 'name': '女神', 'age': 18}]
filter
筛选函数
- 语法: filter(function. Iterable)
- function:用来筛选的函数. 在filter中会自动的把iterable中的元素传递给function. 然后根据function返回的True或False来判断是否保留此项数据
- Iterable: 可迭代对象
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] ll = filter(lambda i: i % 2 == 1, lst) # 第一个参数. 函数. 将第二个参数中的每一个元素传给函数. 函数如果返回True, 留下该元素. print("__iter__" in dir(ll)) print("__next__" in dir(ll)) print(list(ll))
结果:
True
True
[1, 3, 5, 7, 9]
lst = [ {'id': 1, 'name': '张三', 'age': 18}, {'id': 2, 'name': '李四', 'age': 58}, {'id': 3, 'name': '王五', 'age': 38}, {'id': 4, 'name': '赵六', 'age': 48}, {'id': 5, 'name': '女神', 'age': 18} ] print(list(filter(lambda dic: dic['age'] > 40, lst)))
结果:
[{'id': 2, 'name': '李四', 'age': 58}, {'id': 4, 'name': '赵六', 'age': 48}]
map
映射函数
- 语法: map(function, iterable) 可以对可迭代对象中的每个元素进行映射. 分别去执行function
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] it = map(lambda i: i * i, lst) # 把可迭代对象中的每一个元素传递给前面的函数进行处理. 处理的结果会返回成迭代器 print(list(it))
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
lst1 = [1, 2, 3, 4, 5] lst2 = [2, 4, 6, 8] print(list(map(lambda x, y: x + y, lst1, lst2))) # 如果函数中有多个参数. 后面对应的列表要一一对应
结果:
[3, 6, 9, 12]
分类:
python基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-11-19 git--rebase