自定义函数变量的设置(*/**),lambda匿名函数(map/filter/zip/enumerate)
生活随笔
收集整理的这篇文章主要介绍了
自定义函数变量的设置(*/**),lambda匿名函数(map/filter/zip/enumerate)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
自定义函数变量的设置
一个星号
*传入元组,且这个变量为可变变量
两个星号
**后的那些参数被当做字典类型传递到函数中
带有双星号的可变参数只能出现在参数列表的最后
注意双星号是字典类型(字典形式要有键值对)
不能重复赋值
#对b二次赋值报错 >>>def d(a,b=6,*c,**d):print("a=",a,"b=",b,"c=",c,"d=",d) >>>d(1,2,3,4,b=1) TypeError: d() got multiple values for argument 'b'强制命名参数
>>>def aaa(*,a,b,c):return a+b+c >>>aaa(a=1,b=1,c=1) 3强制命名必须用命名来传递值
>>>def aaa(*,a,b,c):return a+b+c >>>aaa(a=1,1,1) SyntaxError: positional argument follows keyword argument#报错lambda匿名函数
函数名 = lambda 参数:表达式
等价于
def 函数名(参数):
函数体
return 返回值
!!! lambda不允许包含复合语句,只可以包含一个表达式
map函数
map(function(函数),iterable,…(一个或多个序列))
>>>def square(x):return x**2 >>>map(square,[1,2,3,4,5]) # 生成迭代器 <map at 0x2c5f1526860>需要转换
>>>def square(x):return x**2 >>>list(map(square,[1,2,3,4,5])) [1, 4, 9, 16, 25]结合lambda
>>>map(lambda x:x**2,[1,2,3,4,5]) <map at 0x2c5f1526cf8> >>>list(map(lambda x:x**2,[1,2,3,4,5])) [1, 4, 9, 16, 25]filter函数
filter(function(判断函数),iterable(可迭代对象))
留下True,过滤False
判断函数:只能接受一个参数,且返回值是True或False
可迭代对象:直接调filter函数只返回迭代器,需要用list()或其他函数来转换,但在for循环中可以直接使用
zip函数
zip(seq[,seq,…])
可把两个或多个序列中的相应项合并在一起
以元组的格式返回它们
在处理完最短序列中的所有项后停止
enumerate函数
用于将一个可遍历的数据编号
>>>s = ['a','b','c','d'] >>>list(enumerate(s)) #默认从0开始 [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')] >>>list(enumerate(s,start = 1)) #可以设定从1或其他数字开始 [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]总结
以上是生活随笔为你收集整理的自定义函数变量的设置(*/**),lambda匿名函数(map/filter/zip/enumerate)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 职业教育板块优质股 众多机构都看好该领域
- 下一篇: 面向对象编程 object orient