列表元素操作相关的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

   

posted on 2018-12-11 18:16  虞曦非虞兮  阅读(325)  评论(0编辑  收藏  举报