函数的参数传递
参数定义与传递的基本顺序:
位置参数 关键字参数 可变数量参数
def test_fun(a,b=6,*c,**d);
print(‘a =’,a,’’,b=’,b,’,c=’,c,’,d=’,d)
test_fun(1)
a=1,b=6,c=(),d={}
test_fun(a =1,b=2,c =3)
a = 1,b =2,c =(),d ={‘c’:3}
lambda匿名函数
lambda表达式
用来声明匿名函数。也就是没有函数名字的临时使用的小函数。尤其适合需要一个函数作为另一个函数参数的唱和,也可以定义具名函数。
只可以包含一个表达式,该表达式的计算结果可以看作是函数的返回值。不允许包含复合语句,但是在表达式中可以调用其它函数。
sorted([‘abc’,‘afe’,‘acb’],key = lambda x:(x[0],x[2]))
[‘acb’,‘abc’,‘afe’]
map函数
会根据提供的函数对指定序列做映射。
第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表。
def square (x):
return x ** 2
map (square, [1,2,3,4,5])
<map at 0x5815240>
def square (x):
return x ** 2
list(map (square, [1,2,3,4,5]))
[1,4,9,16,25]
map(lambda x: x**2,[1,2,3,4,5])
<map at 0X58077b8>
def add(x,y,z):
return x+y+z
list1 = [1,2,3]
list2 = [1,2,3,4]
list3 = [1,2,3,4,5]
res = map(add,list1,list2,list3)
print(list(res))
[3,6,9]
filter函数
用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
接受两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函进进行判断,然后返回F或者T,并将返回T的元素放大新列表中。
list(filter(None,[0,1,2,3,0,0]))
[1,2,3]
zip函数
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回有这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短对象相同,利用“号操作符,可以将元组解压为列表。
a = [1,2,3]
b = [4,5,6]
list(zip(a,b))
[(1,4),(2,5),(3,6)]
zip后元素可以转变为字典形式,但是前提是键是不可变类型。
enumerate函数
用于将一个可遍历的数据对象(如列表,元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。
seasons = [‘Spring’,‘Summer’,‘Fall’,‘Winter’]
list(enumerate(seasons,start=1)) #下标从1开始
[(1,‘Spring’),(2,‘Summer’),(3,‘Fall’),(4,‘Winter’)]