python--sorted、filter、map
原创
©著作权归作者所有:来自51CTO博客作者邹邹很busy的原创作品,请联系作者获取转载授权,否则将追究法律责任
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))
结果:
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))) # 如果函数中有多个参数. 后面对应的列表要一一对应
结果: