1.map()
map接受两个参数,一个是函数,一个是Iterable, map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterable 返回。
看一个例子,一个计算list中每一个元素的平方的方法:
首先定义一个元素级的计算平方值的函数,
def f(x):
return x*x
对于任意一个数值型的list:
r = map(f, list)
以上就是map的用法,map作为一个高阶函数,事实上它抽象了运算规则,这里的函数可以是任意复杂的函数。
2.reduce()
reduce 必须接收两个参数,与map类似,第一个参数表示要在第二个参数上的运算,第二个参数是一个序列,reduce把结果继续喝序列的下一个元素做累积计算。
效果如下:
redude(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
举一个将字符串转化为整数的例子:
from functools
import reduce
DIGITS = {
'0':
0,
'1':
1,
'2':
2,
'3':
3,
'4':
4,
'5':
5,
'6':
6,
'7':
7,
'8':
8,
'9':
9}
def
str2int(s):
def
fn(x, y):
return x *
10 + y
def
char2num(s):
return DIGITS[s]
return reduce(fn, map(char2num, s))
3.filter()
filter也接收一个函数和一个序列,filter()把传入的函数依次作用于每一个元素,然后根据返回值是True还是False决定是保留还是丢弃该元素。
看一个删掉一个序列中的空字符串的例子:
def not_empty(s):
return s and s.strip()
list(filter(not_empty, [s1, s2, s3, s4]
4.sorted()
sorted 可以对list排序
sorted([x1, x2, x3, x4])
它还可以接收一个key函数来实现自定义的排序,如按绝对值大小排序:
sorted([36, 5, -12, 9, -21], key=abs)
—>[5, 9, -12, -21, 36]
key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。如果进行反向排序,则可以传入第三个参数:reverse=True
注:本文内容为观看廖雪峰的python教程后的记录和总结,教程的地址为:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000