python-高阶函数
filter
- 对序列进行过滤
map
- 根据函数的返回结果,对序列中的元素进行转化
针对单个序列
多个序列
print(list(map(lambda x, y, z: [x, y, z], 'abc', [1,2,3],(11, 22, 33))))
print(list(map(lambda x, y: x + y, 'abc', 'de')))
reduce
- 不能有多个序列作为参数
无默认值
from functools import reduce
"""
For example,reduce(lambda x,y:x+y,[1,2,3,4,5])calculates
(((1+2)+3)+4)+5).
根据函数的功能对序列中的元素进行累计
"""
print(reduce(lambda x, y: int(x) * 10 + int(y), [1, 2, 3]))
#先 int(1)*10+int(2)=12 => int(12)*10+int(3)=123
有默认值
from functools import reduce
"""
如果没有默认值计算一个空序列报错
如果有默认值计算一个空序列结果就是这个默认值
如果有默认值计算非空序列默认值会当做序列第一个元素参与运算结果就是累计的和
"""
nums=[]
res=reduce(lambda x,y:x+y,nums) # 报错
print(res)
res1=reduce(lambda x,y:x+y,nums,10) # 为默认值
print(res1)
res2=reduce(lambda x,y:x+y,[1,2,3],10) # 默认值,放到序列最前面,为第一个元素
print(res2)
sorted
- sort只能对列表进行排序
"abdesxc".sort()
#找的是字符串中的排序功能但是字符串中没有这个功能使用就会报错
[12,43,18].sort()#通过列表查找排序功能不会报错因为列表支持排序
- sorted可以对指定序列进行排序
- sorted(序列,key=函数,reverses=True/False)
- key默认是None–按照元素大小进行排序的
- reverse默认是False—排序之后默认是升序的
- 生成的是一个新列表包含了排序之后的序列中的所有的元素
new_list=sorted('dfasjkwq')#按照大小升序排序
print(new_list)#['a','d','f','j','k','q','s','w']
new_list=sorted('dfasjkwq',reverse=True)#按照大小降序排序
print(new_list)#['w','s','q','k','j','f','d','a']
words=['hello','bye','nice','beautiful']
new_list=sorted(words,key=len,reverse=True)#按照元素的长度进行降序排序
print(new_list)#['beautiful','hello','nice','bye']
print(words)#['hello','bye','nice','beautiful']
zip
"""
zip组合
可以接受多个序列
依次将每个序列中的元素重新组合成小序列
组成小序列的个数以元素少的序列为准
"""
print(list(zip([1, 2, 3], "abcdef")))
原文地址:https://blog.csdn.net/2202_75361164/article/details/143538318
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!