sorted 、 filter 、 map

sorted   排序函数

内置函数中提供了一个通用的排序方案 ,返回一个新的列表,不会改变原数据

语法: sorted(iterable, key, reverse)
key: 排序方案, sorted函数内部会把可迭代对象中的每一个元素拿出来交给后面的key
后面的key计算出一个数字. 作为当前这个元素的权重, 整个函数根据权重进行排序
reverse 参数默认为False(升序)
lst = [
    {'name':"汪峰","age":48},
    {"name":"章子怡",'age':38},
    {"name":"alex","age":39},
    {"name":"wusir","age":32},
    {"name":"赵一宁","age":28}
    ]

# 根据年龄排序 ll
= sorted(lst, key=lambda le: le['age']) print(ll)

# 根据名字长度排序
ll = sorted(lst, key=lambda le: len(le['name']))
print(ll)


filter 过滤函数
filter(function, iterable)  返回一个迭代器 可通过for list() next() 取值
把可迭代对象中的每一个元素交给前面的函数进行筛选. 函数返回True或者False
#留下大于60分的
lst = [ {"name":"汪峰", "score":48}, {"name":"章子怡", "score":39}, {"name":"赵一宁","score":97}, {"name":"石可心","score":90} ] ll = filter(lambda el: el['score'] > 60, lst) print(ll) #==》<filter object at 0x02CA08B0> 迭代器地址 print(list(ll)) #==》[{'name': '赵一宁', 'score': 97}, {'name': '石可心', 'score': 90}]
map    映射函数
语法  map(function, iterable)   返回一个迭代器于filter()类似
把可迭代对象中的数据交给前面的函数进行执行. 返回值就是map的处理结果
# 返回一个可迭代数据的平方
lst = [1, 2, 3] ll = map(lambda n : n**2, lst) # print(list(ll)) for el in ll: print(el)

map可以将可迭代对象进行处理,与zip()类似有水桶效应,多出的项不做处理

# 水桶效应, zip()
lst1 = [1, 3, 5, 7]
lst2 = [2, 4, 6, 8, 10]
m = map(lambda x, y, z: x + y + z, lst1, lst2, [5, 1, 2, 3, 6])
print(list(m))
输出:[8, 8, 13, 18]

原文地址:https://www.cnblogs.com/Mr-wangxd/p/9482520.html