>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包為元組的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素個數與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 與 zip 相反,*zipped 可理解為解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]
-------------- 注意: ------------
1、zip生成的物件只能迭代一次
>>> a=[1,2,3]
>>> b=[1,2,3]
>>> c=zip(a,b)
>>> for x in c:
print(x)
>>> print(list(c),type(c))
>>> print('test')
>>> for x in c:
print(x)
結果:>>> >>> (1, 1)
>>> (2, 2)
>>> (3, 3)
>>> >>> test
>>>
2、當zip()函式中只有乙個引數時,zip(iterable)從iterable中依次取乙個元組,組成乙個元組。
list1 = [1, 2, 3, 4]
tuple1 = zip(list1)
print(list(tuple1))
結果:
>>> [(1,), (2,), (3,), (4,)]
表示式:函式名=lambda 引數1,引數2,... : 表示式
>>> add=lambda x,y:x+y
>>> print(add(2,3))
>>> 5
表示式:filter(表示式,可迭代物件)
>>> x = [1,2,3,4,5]
>>> print(list(filter(lambda x:x%2==0,x)))
>>> [2, 4]
注意:
>>> l = [x for x in range(0, 10)]
>>> print(list(filter(none, l)))
>>> [1,2,3,4,5,6,7,8,9]
filter的第乙個引數傳入了none,所以在迭代過程中,0被判斷為false從而被過濾,1~9被保留下來。
>>> def square(x): # 計算平方數
return x ** 2
>>> map(square, [1, 2, 3, 4, 5]) # 計算列表各個元素的平方
>>> [1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函式
>>> [1, 4, 9, 16, 25]
# 提供了兩個列表,對相同位置的列表資料進行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
>>> [3, 7, 11, 15, 19]
>>>def add(x, y) : # 兩數相加
... return x + y
...
>>> reduce(add, [1,2,3,4,5]) # 計算列表和:1+2+3+4+5
15>>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函式
15>>> print(sum([1,2,3,4,5]))
15
注:不如用sum。 python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
Python高階 函式高階
閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...
python 函式 高階函式
filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...