列表元素操作相关的2个函数和匿名函数
enumerate()函数:
遍历列表时,同时获取每个元素的索引号和对应的元素值:
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
for i, char in enumerate(l):
print('列表的第{}个元素是:{}'.format(i, char))
C:\ProgramData\Anaconda3\python.exe C:/Users/dwzhangguiling3/PycharmProjects/lect01/function_learn.py
列表的第0个元素是:a
列表的第1个元素是:b
列表的第2个元素是:c
列表的第3个元素是:d
列表的第4个元素是:e
列表的第5个元素是:f
列表的第6个元素是:g
列表的第7个元素是:h
Zip()函数
将两个列表聚合层一个zip类型数据
l1 = list(range(10))
l2 = list(range(100, 110))
print('列表1是:{}\n列表2是:{}\n,zip后的数据为:'.format(l1, l2))
l3 = zip(l1, l2)
print(*l3)
C:\ProgramData\Anaconda3\python.exe
C:/Users/dwzhangguiling3/PycharmProjects/lect01/function_learn.py
列表1是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
列表2是:[100, 101, 102, 103, 104, 105, 106, 107, 108, 109] ,
zip后的数据为:
(0, 100) (1, 101) (2, 102) (3, 103) (4, 104) (5, 105) (6, 106) (7, 107) (8, 108) (9, 109)
Process finished with exit code 0
lambda函数
add = lambda x, y : x+y
add(1,2) # 结果为3
1、应用在函数式编程中
Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:
# 需求:将列表中的元素按照绝对值大小进行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))
当然,也可以如下:
list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):
return abs(x)
sorted(list1,key=get_abs)
2、应用在闭包中
def get_y(a,b):
return lambda x:ax+b
y1 = get_y(1,1)
y1(1) # 结果为2
当然,也可以用常规函数实现闭包,如下:
def get_y(a,b):
def func(x):
return ax+b
return func
y1 = get_y(1,1)
y1(1) # 结果为2