每天开心一点

python中map,sorted

2020-09-11 14:52:00    六月    762    来源: https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080

map()函数接收两个参数,一个是函数,一个是 Iterable map 将传入的函数依次作用到序列的每个元素,并把结果作为新的 Iterator 返回。举例说明,比如我们有一个函数f(x)=x 2,要把这个函数作用在一个list  [1, 2, 3, 4, 5, 6, 7, 8, 9] 上,就可以用 map() 实现如下:

f(x) = x * x

                  │
                  │
  ┌───┬───┬───┬───┼───┬───┬───┬───┐
  │   │   │   │   │   │   │   │   │
  ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼

[ 1   2   3   4   5   6   7   8   9 ]

  │   │   │   │   │   │   │   │   │
  │   │   │   │   │   │   │   │   │
  ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼

[ 1   4   9  16  25  36  49  64  81 ]

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

>>> sorted([36, 5, -12, 9, -21])

[-21, -12, 5, 9, 36]

此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

>>> sorted([36, 5, -12, 9, -21], key=abs)

[5, 9, -12, -21, 36]

key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。对比原始的list和经过key=abs处理过的list:

list = [36, 5, -12, 9, -21]

keys = [36, 5,  12, 9,  21]

然后sorted()函数按照keys进行排序,并按照对应关系返回list相应的元素:

keys排序结果 => [5, 9,  12,  21, 36]
                |  |    |    |   |
最终结果     => [5, 9, -12, -21, 36]