大数据,机器学习,人工智能机器学习_Python算法Python札记

Python札记24_lambda、map

2019-06-30  本文已影响1人  皮皮大

Python中有几个特殊的函数,它们能够进行函数式的编程。在函数式编程中,一个程序会被看做是一个无状态的函数计算的串行。本文中讲解前2个特殊函数:


lambda

lambda函数在Python中是一个神奇的函数,只用一个代码就可以解决很多的问题,通过一个例子来体现下lambda函数的神奇之处:

下面是通过定义一个add函数来实现加法的功能

def add(x):
    x += 2  # x自加2
    return x

numbers = list(range(10))
new_numbers = []
for i in numbers:
    new_numbers.append(add(i))

new_numbers

通过for语句的列表解析式来实现:好像也很厉害的样子

new_numbers = [x + 2 for x in list(range(10))]    # 可以不带list,for循环遍历的对象有next方法即可
new_numbers
image.png

通过lambda函数怎么实现呢?

lam = lambda x: x+2
lst = []
for i in numbers:   #  numbers还是上面的例子
    lst.append(lam(i))

lst
image.png
res = lambda x, y: x + y   # 两个参数形式
res(2, 5)
image.png
res = lambda x,y: x**y    # 先定义两个参数和一个函数
z = 5  # z看做其中的一个参数
[res(z, i) for i in range(z)]   # 将两个参数带入函数中
image.png

lambda总结


map

上面lambda函数中的例子通过map函数实现

def add(x):
    x += 2  # x自加2
    return x

numbers = list(range(10))
list(map(add, numbers))   # 先通过定义的函数实现
image.png
list(map(lambda x: x+2, numbers))
image.png
items = list(range(10))
squared = []
for i in items:   # for遍历完成
    squared.append(i*2)
    
squared
image.png

map实现

def square(x):
    return x*2

list(map(square, items))   # map函数实现,两个参数中前面是函数,后面是序列
image.png
list1 = range(1, 6)
list2 = range(6, 11)
list(map(lambda x, y: x + y, list1, list2))   # 将两个list中的对象一次相加
image.png

for遍历循环实现

list1 = range(1, 6)
list2 = range(6, 11)
list3 = []
for i in range(len(list1)):
    list3.append(list1[i]+list2[i])
    
list3
image.png
list1 = range(1, 6)
list2 = range(6, 11)
list3 = range(3, 8)
list4 = []
for i in range(len(list1)):
    list4.append(list1[i] + list2[i] + list3[i])    # 3层相加更简洁
    
list4
image.png
list(map(lambda x, y, z: x+y+z, list1, list2, list3))
image.png

map总结

上一篇 下一篇

猜你喜欢

热点阅读