filter, sort
def is_odd(n): return n % 2 == 1 t = list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0])) print(t) #注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。 def not_empty(s): return s and s.strip() g = ['A', '', 'B', None, 'C', ' '] print(g) t = list(filter(not_empty, g)) print(t) s = ' rain ' print(s.strip()) t = 'www.example.com'.strip('comowle.z') print(t) def _odd_iterator(): n = 1 while(True): n = n + 2 yield n def _not_divisible(n): return lambda x : x % n > 0 def primes(): it = _odd_iterator() yield 2 while(True): n = next(it) yield n it = filter(_not_divisible(n), it) for n in primes(): if n < 1000: print(n) else: break
上面是filter
下面是sort
t = sorted([1, 5, 6, -19, 54]) print(t) t = sorted([1, 5, 6, 7, -19, 54], key = abs) print(t) #忽略大小写对首字母的顺序进行排序,实际上是根据ascii码进行排序 t = sorted(['rain', 'SUN', 'rainbow', 'Thinker'], key = str.lower) print(t) #要实现反向排序,不必更改key函数,可传入第三个参数,reverse = True t = sorted(['rain', 'SUN', 'rainbow', 'Thinker'], key = str.lower, reverse = True) print(t) L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] #按名字排序 def by_name(t): #其中t[0]是t的名字,比如Bob,t[1]是t的分数,比如75 return t[0] L2 = sorted(L, key=by_name) print('按照成绩排序', L2) #按照成绩排序 def by_score(t): return t[1] L2= sorted(L, key = by_score, reverse = True) print('按照分数排序', L2)