Python 基本數據類型基礎實戰【Lambda】

#Reference:https://blog.csdn.net/program_developer/article/details/82024468
#Reference:Python程序設計基礎(第2版)
#lambda效率不及operator
#冒號前是輸入參數,冒號後是返回值
add = lambda x,y:x**y
print(add(2,5))

g = lambda x, y=2, z=6:x*y+z
print(g(10))

#wrong example
r = []
x = 1
for x in range(10):
    r.append(lambda :x**2)
print(r[1]())#不加括號將返回迭代器對象
#Answer: Wa
#81

#Accepted example
r = []
x = 1
for x in range(10):
    r.append(lambda n = x:n**2)
print(r[5]())#不加括號將返回迭代器對象
#Answer: 
#25
    


f = lambda :i
i = 3
print(f())
i = 5
print(f())
#Answer:
#3
#5

#lambda在filter中的調用
def is_odd(n):
    return n % 2 == 1
newlist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
print(newlist)#返回迭代器對象
#<filter object at 0x00000276A34FBEB8>
print(list(newlist))#返回列表
#[1, 3, 5, 7, 9]

newlist = list(filter(lambda n : n % 2 == 1,[1,2,3,4,5,6,7,8,9,10]))
print(newlist)
#[1, 3, 5, 7, 9]

newlist = (filter(lambda n : n % 2 == 1,[1,2,3,4,5,6,7,8,9,10]))
print(newlist)
#<filter object at 0x0000019C0771BEB8>

#lambda在sort中的調用
data = [1,2,3,4,5,6,7,8,9,10,5,4,2]
data.sort(key = lambda x:-x)#用於sort中的參數傳遞,感覺類似於C++ sort cmp編寫
print(data)
#[10, 9, 8, 7, 6, 5, 5, 4, 4, 3, 2, 2, 1]

data.sort(key = lambda x: len(str(x)))#按照字符串長度排序
print(data)
#[9, 8, 7, 6, 5, 5, 4, 4, 3, 2, 2, 1, 10]

data.sort(key = lambda x: len(str(x)), reverse=True)
print(data)
#[10, 9, 8, 7, 6, 5, 5, 4, 4, 3, 2, 2, 1]

data = [1,2,3,4,5,6,7,8,9,10,5,4,2]
data.sort(key = lambda x: len(str(x)), reverse=True)#與上一條測試對比,可證明sort排序是穩定的
print(data)
#[10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 4, 2]

#lambda在map映射中的使用
def squp(x):
    return x * x
newlist = list(map(squp, [1,2,3,4,5]))
print(newlist)
#[1, 4, 9, 16, 25]

newlist = list(map(lambda x:x**2,[1,2,3,4,5]))
print(newlist)
#[1, 4, 9, 16, 25]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章