python高阶函数(filter与sorted)

filter()

Python内建的filter()函数用于过滤序列

filter()接收一个函数和一个序列。

filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

# def s(n): #定义函数
#     return n%2==0 #函数输出结果为偶数
# a=list(filter(s,[1,2,3,4,5,6,7,8,9])) #将数列中的数依次加入到函数中筛选数列中为偶数的数
# print(a)

 把一个序列中的空字符串删掉,可以这么写:

# def not_empty(s):
#     return s and s.strip()
# a=list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))
# print(a)

 

 注意:filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list

小结

filter()的作用是从一个序列中筛出符合条件的元素。由于filter()使用了惰性计算,所以只有在取filter()结果的时候,才会真正筛选并每次返回下一个筛出的元素。

sorted         排序算法

Python内置的sorted()函数就可以对list进行排序

# a=[45,16,2,15,449,5,25,1]
# b=sorted(a)
# print(b)

 

 反向排序  ,加入参数 reverse=True

# a=[45,16,2,15,449,5,25,1]
# b=sorted(a,reverse=True)
# print(b)

 默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面

# a=['Z','a','e','T']
# b=sorted(a)
# print(b)

 

 

 用key=str.lower可以忽略大小写

# a=['Z','a','e','T']
# b=sorted(a,key=str.lower)
# print(b)

 

小结

sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。

 

posted @ 2020-12-01 15:16  秋叶落日  阅读(191)  评论(0编辑  收藏  举报