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()
排序的关键在于实现一个映射函数。