一,map
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回,实际就是数学中的给定函数和变量求值
def f(x):#map
return x*x
print(list(map(f,[1,2,3,4,5])))#将f函数作用于list的每一个元素
print(list(map(str,[1,2,3])))#将整数转为字符串
二、reduce
reduce
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算
def mul(x,y):
return x*y;
print(reduce(mul,[1,2,3,4,5,6]))#累计求积
三、filter
和
map()
类似,
filter()
也接收一个函数和一个序列。和
map()
不同的是,
filter()
把传入的函数依次作用于每个元素,返回值是
True
则保留,否则舍弃
def is0dd(n):
return n%2==0
print(list(filter(is0dd,[1,2,3,4,5,6])))#过滤偶数
四、sorted
使用
sorted
()方法和
list
.sort()方法进行排序,其中sorted
()
排序之后还是list,list
.sort()
排序返回的是一个object,需要输出排序内容还需要进行print()
elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]
print(sorted(elements))#[(1, 3, 'L'), (1, 11, 'N'), (2, 4, 'B'), (2, 12, 'A')]
elements.sort()
print(elements)#注意此处不能写成print(elements.sort()
operator模块中的itemgetter()函数,用于获取对象的哪些维的数据
from operator import itemgetter
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
print(sorted(L,key=itemgetter(0)))#按名字排序
print(sorted(L,key=itemgetter(1),reverse=True))#按成绩从高到低排序
排序中除了应用itemgetter外还可以用内置函数lambda
print(sorted(elements,key=lambda e:e[1:]))#通过切片的方式 按后两个元素排序print(sorted(elements,key=lambda e:(e[1],e[2])))#直接指定,必须用()括起来elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]