1. 程式人生 > >python3:lambda,map,filter內置函數

python3:lambda,map,filter內置函數

python 菜鳥 ble stdin () HR ons true result

notes: 參考文檔-(菜鳥教程)http://www.runoob.com/python/python-built-in-functions.html

參考文檔-(妖白)http://blog.csdn.net/qq_24753293/article/details/78337818

一.lambda()

描述:

簡化def函數

實例:

A=lambda x:x+1
理解為:
def A(x):
    return x+1
冒號左邊→想要傳遞的參數
冒號右邊→想要得到的數(可能帶表達式)

二.map()

描述:

map(function, iterable, ...)會根據提供的函數對指定序列做映射,返回叠代器

實例:

>>>def square(x) :            # 計算平方數
...     return x ** 2
... 
>>> list(map(square, [1,2,3,4,5]))   # 計算列表各個元素的平方
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))  # 使用 lambda 匿名函數
[1, 4, 9, 16, 25]
 
# 提供了兩個列表,對相同位置的列表數據進行相加
>>> list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
[3, 7, 11, 15, 19]

#如果函數有多個參數, 但每個參數的序列元素數量不一樣, 會根據最少元素的序列進行:
>>> listx = [1,2,3,4,5,6,7]       # 7 個元素
>>> listy = [2,3,4,5,6,7]         # 6 個元素 
>>> listz = [100,100,100,100]     # 4 個元素
>>> list_result = map(lambda x,y,z : x**2 + y + z,listx, listy, listz)
>>> print(list(list_result))
[103, 107, 113, 121]

三.filter()

描述:

filter(function, iterable) 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新叠代器

實例:

#只有序列中的元素執行函數(is_odd)為true時,才被用於構建新的叠代器
>>> 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 0x00000227B33F8198>
>>> print(list(newlist))
[1, 3, 5, 7, 9]

#用map函數模仿filter
list(map(lambda x:x-5 if x>5 else x,[4,5,6]))
[4, 5, 1]
#理解: if為true,執行lambda表達式,if為false,執行 else 表達式

#用map函數模仿filter,必須要有"else"
>>> list(map(lambda x:x-5 if x>5 ,[4,5,6]))
  File "<stdin>", line 1
    list(map(lambda x:x-5 if x>5 ,[4,5,6]))
                                 ^
SyntaxError: invalid syntax

python3:lambda,map,filter內置函數