python中三个高阶函数:map、filter 、sorted详记

个人理解,所属为了记忆使用,不涉及深层原理

##################################【map(func, *iterable)】
                                                            return 加工完成后的可迭代对象

func(位置形参): 传入一个加工数据的函数, 返回一个表达式对象
*iterable(星号元组形参):传入一个或多个可迭代对象,map函数会帮你依次从这个可迭代对象中拿取元素传入到func中进行加工
示例
# 我想计算1**2 + 2**2 + 3**2 + … + 9**2的和
print([i for i in map(lambda x : x **2, range(10))])

# 我想计算1**2 + 2**3 + 3**4 + ... + 9**10的和
print([i for i in map(lambda x, y : x ** y, range(1, 10), range(2, 11))])
##################################【filter(func, iterable)】
                                                           return 过滤之后的可迭代对象

func(位置形参): 传入一个过滤数据的函数, 返回一个bool类型的值
iterable(位置形参):传入一个可迭代对象,filter函数会帮你依次从这个可迭代对象中拿取元素传入到func中进行过滤
示例
# 我想要得到0-9中大于2的数字
print(filter(lambda x : x>2, range(10))) # 返回的是过滤之后得到的可迭代对象的地址
print(list( filter(lambda x : x>2, range(10)) )) # 生成列表(其他容器也一样)之后就可以打印输出

##################################【sorted(iterable, key=None, reverse=False)】
                                                           return 排序好之后的原类型的迭代对象

iterable(位置形参):传入一个可迭代对象,用于排序的原数据
key(关键字形参):传入一个函数名,此函数是用来决定iterable排序的依据
reverse(关键字形参):决定sorted排序的方式, reverse=False 从小到大排 reverse=True 从大到小排
示例
# 我想把列表[1, 3, 5, 5, 6, 2, 1]简单排个序,只要排了就行
l = [1, 3, 5, 5, 6, 2, 1]
l = sorted(l)
print(l)

# 我想把列表[1, -2, 3, -4, 5, -6]按住数字的绝对值排序,而不是按住数字本身排序
l = [1, -2, 3, -4, 5, -6]
l = sorted(l, key=lambda x : abs(x))
print(l)

# 我想把一些单词['hello', 'me', 'you', 'factorial', 'python', 'student']按照首字母的顺序排个序
l = ['hello', 'me', 'you', 'factorial', 'python', 'student']
l = sorted(l)


# 我想把一些单词['hello', 'me', 'you', 'factorial', 'python', 'student']按照单词的长短排个序
l = ['hello', 'me', 'you', 'factorial', 'python', 'student']
l = sorted(l, key=lambda w : len(w))
print(l)

and so on

猜你喜欢

转载自blog.csdn.net/qq767852841/article/details/81840899