python中的zip 函式和map 函式

2022-08-24 23:15:16 字數 3075 閱讀 2904

1.語法:

zip(iterable, ...)
引數說明:

iterable,...—— 乙個或多個迭代器;
zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。

zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的物件,這樣做的好處是節約了不少的記憶體。

我們可以使用 list() 轉換來輸出列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。

2.返回值:

3.用法:(python3環境)

>>>a = [1,2,3]

>>> b = [4,5,6]

>>> c = [4,5,6,7,8]

>>> zipped = zip(a,b) # 返回乙個物件

>>> zipped

>>> list(zipped) # list() 轉換為列表

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

>>> list(zip(a,c)) # 元素個數與最短的列表一致

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

>>> zipped = zip(a,b)

>>> a1, a2 = zip(*ziped) # 與 zip 相反,zip(*) 可理解為解壓,返回二維矩陣式

>>> a1

(1, 2, 3)

>>> a2

(4, 5, 6)

>>>c = ('a','b','c')

>>>d = (1,2,3)

>>>aa = zip(c,d)

>>>list(aa)

[('a', 1), ('b', 2), ('c', 3)]

4.關於用』*『解包

1.帶*號的表示式獲取序列剩餘部分

>>> a,b,*c = 1,2,3,4,5

>>> a

1>>> b

2>>> c

[3, 4, 5]

2.帶*號的表示式獲取序列中間部分

>>> a,*b,c = 1,2,3,4,5

>>> a

1>>> b

[2, 3, 4]

>>> c

53.帶*號的表示式獲取序列前面部分

>>> *a,b,c = 1,2,3,4,5

>>> a

[1, 2, 3]

>>> b

4>>> c

54.巢狀解包

>>> (a,b),(c,d) = (1,2),(3,4)

>>> a

1>>> b

2>>> c

3>>> d

4>>> a,b

(1, 2)

>>> a,b,c,d

(1, 2, 3, 4)

1.語法:

map(func, iterable, ...)
map()會根據提供的函式對指定序列做對映。

第乙個引數 func 是函式名字,它把函式 func 依次作用在後面每個 iterable 的每個元素上,然後並返回執行結果。

2.返回值:

3.用法:(python3環境)

>>>def square(x) :            # 計算平方數

... return x ** 2

...

>>> m = map(square, [1,2,3,4,5]) # 計算列表各個元素的平方

>>> list(m)

[1, 4, 9, 16, 25]

>>> m = map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函式

>>> list(m)

[1, 4, 9, 16, 25]

# 提供了兩個列表,對相同位置的列表資料進行相加

>>> m = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

>>> list(m)

[3, 7, 11, 15, 19]

4.map()的特殊情況:函式是none

如果函式是 none,自動假定乙個『identity』函式,這時候就是模仿 zip()函式,

>>>l=[1,2,3,4]

>>>x=map(none,l)

>>>print(x)

[1,2,3,4]

當有多個列表時,相同位置的元素歸併到乙個元組。如:

>>> print map(none, [4,5,6],[3,2,1])

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

列表長度不一致時,會用none補足,如:

>>> print map(none, [4,5,6],[3,2,1,0])

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

在 python3中,由於map()返回是乙個迭代器,所以在這種情況下,map()返回的這個物件其實是不可呼叫的

>>> m = map(none,[1,2,3,4])

>>> m

>>> list(m)

traceback (most recent call last):

file "", line 1, in typeerror: 'nonetype' object is not callable

Python中的Zip 函式

zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。zip 語法 zip iterable,引數說明 返回元組列表。以下例項展示了 zip 的使...

Python中的zip函式

定義 zip iterable,zip 是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素打包成乙個個tuple 元組 然後返回由這些tuples組成的list 列表 若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。利用 號操作符,可以將list...

python中的zip函式

先貼上原始碼 zip iter1 iter2 zipobject return a zip object whose next method returns a tuple where the i th element comes from the i th iterable argument.th...