1. 程式人生 > >Python3基礎之(二十 九)zip lambda map

Python3基礎之(二十 九)zip lambda map

一、zip

zip函式接受任意多個(包括0個和1個)序列作為引數,合併後返回一個tuple列表,請看示例:

a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab))#需要加list來視覺化這個功能

輸出:

[(1, 4), (2, 5), (3, 6)]

zip 中的運算

a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
for i,j in zip(a,b):
    print(i/2,j*2)

輸出:

0.5 8
1.0 10
1.5 12

二、lambda

lambda定義一個簡單的函式,實現簡化程式碼的功能,類似於c/c++

中的巨集定義:#define SQR (x) x * x。看程式碼會更好理解。

fun = lambda x,y : x+y, 冒號前的x,y為自變數,冒號後x+y為具體運算。

func=lambda x,y:x+y
x=int(input('x='))
y=int(input('y='))
print(func(x,y))

輸入x``y的值後輸出x+y

x=2
y=4
6

三、map

map()Python內建的高階函式,它接收一個函式f 和一個 list,並通過把函式 f 依次作用在list的每個元素上,得到一個新的 list並返回。,看下面的程式:

def
mult(x): return x*x print(list(map(mult,[1,2,3,4,5,6,7,8,9])))

輸出結果:

[1, 4, 9, 16, 25, 36, 49, 64, 81]

注意:map()函式不改變原有的list,而是返回一個新的list

利用map()函式,可以把一個list 轉換為另一個list,只需要傳入轉換函式。

由於list包含的元素可以是任何型別,因此,map()不僅僅可以處理只包含數值的 list,事實上它可以處理包含任意型別的 list,只要傳入的函式f可以處理這種資料型別。