一、lambda:
简化书写,不用起名字
>>> g=lambda x,y:2*x+y
>>> g(5,6)
16
>>> p={'大学':13,'设计':9,'美国':16}
>>> t=list(p)
>>> t
['大学', '设计', '美国']
>>> t=list(p.items())
>>> t
[('大学', 13), ('设计', 9), ('美国', 16)]
>>> t.sort(key=lambda x:x[1],reverse=True)
>>> t
[('美国', 16), ('大学', 13), ('设计', 9)]
>>>
二、filter:过滤函数
fliter(function,sequence)
function可以是匿名函数或者自定义函数,它可以对后面的sequence序列的每个元素判定是否符合条件,返回True或者False,从而留下True的元素;sequence可以是列表、元组或者字符串。
注意:迭代器需要进行列表转换 (参考自https://www.cnblogs.com/bubutianshu/p/10958673.html)
例如:出去1到20中,所有能被3整除的数:
>>> list(filter(lambda x:x%3,range(1,20))) #x%3==0时,0为False,所以就把x%3==0的给删除了。对于python来说0就是False
[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19]
来自廖雪峰的练习例子: https://www.liaoxuefeng.com/wiki/1016959663602400/1017451447842528
请改造以下函数:
def is_odd(n):
return n % 2 == 1
L = list(filter(is_odd, range(1, 20)))
>>> list(filter(lambda x:x%2,range(1,20)))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> def is_odd(n):
return n%2==1
>>> list(filter(is_odd,range(1,20)))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>>
三、map函数
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。(https://www.runoob.com/python/python-func-map.html)
语法:
map() 函数语法:
map(function, iterable1, iterable2,…)
function函数的参数值可以是一个,也可以是多个;后面的iterable代表function运算中的参数值,有几个参数值就传入几个iterable。
注意:
1.迭代器需要进行列表转换
2.map中如果传入的序列长度不一,会依据最短的序列计算
3.map后其作用是生成一个新的迭代器,原来的迭代器不变。
>>> l=['1','2','3']
>>> list(map(int,l)) #function 的参数值是一个
[1, 2, 3]
>>> l
['1', '2', '3']#map后其作用是生成一个新的迭代器,原来的迭代器不变
>>>
>>> l=[1,2,3]
>>> m=[4,5,6,7]
>>> list(map(lambda x,y:x+y,l,m))#function的参数值是两个
[5, 7, 9] #map中如果传入的序列长度不一,会依据最短的序列计算
>>>