filter | map | reduse | sorted | |
作用 | 接收一个函数和一个序列, filter() 把传入的函数依次作用于每个元素,然后根据返回值是True 还是False 决定保留还是丢弃该元素。 | map() 函数接收两个参数,一个是函数,一个是Iterable ,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator 返回。 | reduce 把一个函数作用在一个序列[x1, x2, x3, ...] 上,这个函数必须接收两个参数,reduce 把结果继续和序列的下一个元素做累积计算 |
1、sorted()函数是对
列表里元素(元素既可以是数字也可以是字符串甚至是tuple、list)按照key 进行reverse = True
或者 reverse = False 次序排序。
|
特性 | 用
注意到
filter() 函数返回的是一个
Iterator ,也就是一个惰性序列,所以要强迫
filter() 完成计算结果,需要用
list() 函数获得所有结果并返回list。
| map() 传入的第一个参数是f ,即函数对象本身。由于结果r 是一个Iterator ,Iterator 是惰性序列,因此通过list() 函数让它把整个序列都计算出来并返回一个list。 | ||
例子 | 1、在一个list中,删掉偶数,只保留奇数,可以这么写: 2、把一个序列中的空字符串删掉,可以这么写: def not_empty(s):
# 结果: ['A', 'B', 'C']
|
1、
def f(x):... return x * x
2、把这个list所有数字转为字符串: >>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']
|
1、
考虑到字符串 >>> from functools import reduce
2、比方说对一个序列求和,就可以用 >>> from functools import reduce
|
、假设我们用一组tuple表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用sorted()对上述列表分别按名字排序:
# -*- coding: utf-8 -*-
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
解:
def by_score(t):
return s[t].lower()
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
L2 = sorted(L, key = by_score,reverse = True)
>>> print(L2)
[('Lisa', 88), ('Bob', 75), ('Bart', 66), ('Adam', 92)]
|
filter 、map 、reduse、sorted 作用、特性及实例
最新推荐文章于 2023-02-02 17:31:12 发布