【小甲鱼零基础入门学python】学习总结之lambda、filter及map函数

一、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中如果传入的序列长度不一,会依据最短的序列计算
>>> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值