map函數
語法
map(function, iterable, ...)
參數
- function -- 函數,有兩個參數
- iterable -- 一個或多個序列
返回值
Python 2.x 返回列表。
Python 3.x 返回迭代器。
1 def square(x) : # 計算平方 2 return x ** 2 3 4 map(square, [1,2,3,4,5]) # 計算列表各個元素的平方 5 6 # 使用lambda表達式 7 map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函數 8 9 map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
lambda
使用lambda表達式實現三目運算符
1 # 要實現的效果 2 if 0 == 0: 3 name = "timo" 4 else: 5 name = "nana" 6 7 # lambda實現 如果if條件成立,name等於if前面的值,否則等於后面的 8 name = "timo" if 0 == 0 "nana"
使用lambda表達式實現簡單的函數
1 # 要實現的效果 2 def func(arg): 3 return arg + 1 4 5 # 執行 6 func(123) 7 8 9 # 使用lambda表達式實現 lambda后面緊跟着的是函數的參數,冒號后面跟着的是返回值 10 lambda_func = lambda arg: arg + 1 11 12 # 執行 13 lambda_func(123)
快捷生成想要的列表
生成一個步長為5的列表
1 arr = [x*5 for x in range(5)] 2 # 得到結果 3 arr = [0, 5, 10, 15, 20]
結合lambda表達式生成列表
1 # 第一種情況 2 f0, f1, f2 = [lambda m: m*i for i in range(3)] 3 4 f0(1) == f1(1) == f2(1) == 2 5 6 7 # 第二種情況 8 9 f = [lambda m: m*i for i in range(3)] 10 11 for l in f: 12 l(1), 13 14 # 結果 2 2 2 15 16 17 # 第三種情況 18 19 f = (lambda m: m*i for i in range(3)) 20 21 for l in f: 22 l(1), 23 24 # 結果 0 1 2 25 26 27 # 第四種情況 28 29 f0, f1, f2 = (lambda m: m*i for i in range(3)) 30 31 f0(1) == f1(1) == f2(1) == 2
關於上面四種情況出現不同結果的原因
第三種情況不是元組,而是返回一個生成器,在調用 l(1) 的時候,是在生成器執行過程之中,所以函數 l 中的 i 變量隨着生成器的迭代在變化,所以最終結果會有變化。
而第四種情況一下把生成器迭代完了,和第一第二種類似,都是所有代碼都執行完了,i 都處於最后一個值 2, 所以值沒有變化.
filter內置函數
描述
filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
語法
filter(function, iterable)
參數
- function -- 判斷函數。
- iterable -- 可迭代對象。
返回值
返回列表。
實例
1 def fun(s): 2 if s != 'a': 3 return s 4 str = ['a', 'b', 'c'] 5 res = filter(fun, str1) #過濾到字符a 6 7 print(res) #返回一個可迭代對象