1. 程式人生 > >lambda 匿名函數,map,filter,reduce,zip,介紹

lambda 匿名函數,map,filter,reduce,zip,介紹

表達式 求最大值 http alt 對象 sum 其他應用 map() rto



sum_1=lambda x,y:x+y
print(sum_1(1,2))

技術分享

技術分享



l=[1,2,3,4]
print(list(map(lambda x:x*4,l)))
#map()將函數func應用於序列seq中的所有元素。
# Python3之前,map()返回一個列表,
# 列表中的每個元素都是將列表或元組“seq”中的相應元素傳入函數func返回的結果
#使用map就相當於使用了一個for循環
def my_map(func,seq):
result=[]
for i in seq:
result.append(func(i))
return result
l=[1,2,3,4]
print(list(my_map(lambda x:x+100,l)))
#########


def my_map(func,seq):
for i in seq:
yield func(i)

l=[1,2,3,4]
print(list(my_map(lambda x:x+100,l)))


#可以給map函數傳入多個序列參數,它將並行的序列作為不同參數傳入函數
print(list(map(pow,[2,3,4],[10,11,12])))

from operator import add
x=[1,2,3]
y=[4,5,6]

print(list(map(add,[1,2,3],[4,5,6]))) #註意格式


############


#filter函數實現一個過濾的功能
#判斷大小
li=[30,11,77,8,25,65,4]
print(list(filter(lambda x:x>33,li)))

#判斷兩個列表的交集
x=[1,2,3,4,5]
y=[3,4,5,6,7]
print(list(filter(lambda a: a in x,y)))

#reduce同樣是接收兩個參數:func(函數)和seq(序列,如list)
#reduce最後返回的不是一個叠代器,它返回一個值
#reduce首先將序列中的前兩個元素,傳入func中,
# 再將得到的結果和第三個元素一起傳入func
# 這樣一直計算到最後,得到一個值,把它作為reduce的結果返回


#reduce 求和
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4]))

#1-100 的和
from functools import reduce
print(reduce(lambda x,y:x+y,range(1,101)))

#三元運算
技術分享


#三元運算(三目運算)在Python中也叫條件表達式。
# 三元運算的語法非常簡單,主要是基於True/False的判斷

#使用它就可以用簡單的一行快速判斷,# 而不再需要使用復雜的多行if語句
from functools import reduce
l=[30,11,33,44,66,232,6]
t=(2,3,5)
print(reduce(lambda x,y:x if x>y else y,l))
print(reduce(lambda x,y:x if x>y else y,t))
print(max(max(2,6),5))
#利用max函數求最大值#三元運算配合lambda表達式和map,
將一個列表裏面的奇數加100
print(list(map(lambda x: x+100 if x%2 else x,l)))
#zip函數接收一個或多個可叠代對象作為參數,
最後返回一個叠代器
x=[‘a‘,‘b‘,‘c‘]
y=[1,2,3]
a=list(zip(x,y))
print(a)
b=list(zip(*a))
print(b)#
zip(x, y) 會生成一個可返回元組 (m, n) 的叠代器,
# 其中m來自x,n來自y。 一旦其中某個序列叠代結束,# 叠代就宣告結束。
因此叠代長度跟參數中最短的那個序列長度一致
x=[1,2,3,4,5]
y=[9,5,6]
for m,n in zip(x,y):
print(m,n)
# 1 9
# 2 5
# 3 6
itertools.zip_longest()
from itertools import zip_longestfor
m,n in zip_longest(x,y):
print(m,n)
#1 9# 2 5# 3 6# 4 None# 5 None#
其他應用
keys = [‘name‘,‘age‘,‘salary‘]
values=[‘andy‘,12,1111]
d=dict(zip(keys,values))
print(d)

lambda 匿名函數,map,filter,reduce,zip,介紹