目录
map
map()函数接收两个参数,一个是函数,一个是序列,map 将传入的函数依次作用到序列中的每个元素,并把结果作为新的list 返回。map函数可以将一个可迭代对象中的每一个元素做同样的操作并返回新的对象。
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 将原来列表中的元素都转化为字符串
str_a = map(str, a)
print(list(str_a))
from collections.abc import Iterable
print(isinstance(str_a, Iterable)) # 判断是否是可迭代对象的方法
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 可迭代对象的每个元素扩大10倍
def multiple(x):
return x * 10
a10 = map(multiple, a)
print(list(a10))
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 多个可迭代对象操作,使用时会自动选择个数最少的操作
n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
m = [10, 20, 30, 40, 50, 60]
def add(x, y):
return x + y
nm = map(add, n, m)
print(list(nm)) # 返回结果:[11, 22, 33, 44, 55, 66]
reduce
reduce把一个函数作用在一个序列[x1, x2,x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。
from functools import reduce
# 对一个序列求和
a = [2, 4, 6, 8, 10]
def sumtest(x, y):
return x + y
sum = reduce(sumtest, a)
print(sum) # 30
# 每次乘以10的结果
def fun1(x, y):
return x * 10 + y
print(reduce(fun1, a)) # 24690
filter
filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
a = [1, 8, ' ', 9, 'i', '汗', '(lll¬ω¬)', '🐶', '😭']
def fun1(x):
# 过滤掉数字及字符长度非1的值
return isinstance(x, str) and len(x) == 1
str_a = filter(fun1, a)
print(list(str_a)) # 结果:['i', '汗', '🐶', '😭']
sorted
sorted()函数就可以对list进行排序
参数reverse:reverse默认为False(升序排列),倒序排列时reverse的值为True,字符串排序按照ASCII码
参数key:如按绝对值key = abs ,忽略大小写 key = str.lower
# 源码
def sorted(*args, **kwargs): # real signature unknown
"""
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
"""
pass