1.map()
用法:
list(map(fn, []))
说明:
map()传入的第一个参数是fn,即函数对象本身。
由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。
实例:
def f(x):
return x * x
r = map(f, [1, 3, 5])
list(r)
#[1, 9, 25]
2.reduce()
用法:
from functools import reduce
reduce(fn, [])
说明:
reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,
再把结果继续和序列的下一个元素做累积计算.
实例:
from functools import reduce
def fn(x, y):
return x * 10 + y
reduce(fn, [1, 3, 5, 7, 9])
#13579
将如下所示的 List 中 dict 去重
data = [{"id":1, "name":"kk"},{"id":2, "name":"leontom"},{"id":1, "name":"kk"}]
解决:
from functools import reduce
list_data = reduce(lambda x, y: x if y in x else x + [y], [[], ] + data)
print(list_data)
>> [{"id":1, "name":"kk"},{"id":2, "name":"leontom"}]
3.filter()
用法:
list(fn, [])
说明:
和map()类似,filter()也接收一个函数和一个序列。
和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
实例:
def fn(n):
return n % 2 == 1
list(filter(fn, [1,2,3,4,5]))
# [1,3,5]
4.sorted()
用法:
sorted([])
说明:
Python内置的sorted()函数就可以对list进行排序;
此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序;
要进行反向排序可以传入第三个参数reverse=True。
实例:
sorted([1,3,2])
# [1,2,3]
sorted(['a','c','b'])
# ['a','b','c']
sorted(['a','c','B'], key=str.lower)
# ['a','B','c']
# 反序排列
sorted([1,3,2], reverse=True)
# [3,2,1]
# 对列表中的字典按照指定的key 排序
import operator
name_list = [{"name":"aaa", "age":1}, {"name":"cccc", "age":2}, {"name":"bbbb", "age":2}]
ret = sorted(name_list, key=operator.itemgetter('name', 'age'))
print(ret)
>> [{'name': 'aaa', 'age': 1}, {'name': 'bbbb', 'age': 2}, {'name': 'cccc', 'age': 2}]
--------------------------END---------------------------------------