最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中zip()函數(shù)的解釋和可視化(實(shí)例詳解)

 更新時間:2020年02月16日 10:34:39   作者:jpld  
zip() 函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的列表。這篇文章主要介紹了Python中zip()函數(shù)的解釋和可視化,需要的朋友可以參考下

zip()的作用

先看一下語法:

zip(iter1 [,iter2 [...]]) —> zip object

Python的內(nèi)置help()模塊提供了一個簡短但又有些令人困惑的解釋:

返回一個元組迭代器,其中第i個元組包含每個參數(shù)序列或可迭代對象中的第i個元素。當(dāng)最短的可迭代輸入耗盡時,迭代器將停止。使用單個可迭代參數(shù),它將返回1元組的迭代器。沒有參數(shù),它將返回一個空的迭代器。

與往常一樣,當(dāng)您精通更一般的計(jì)算機(jī)科學(xué)和Python概念時,此模塊非常有用。但是,對于初學(xué)者來說,這段話只會引發(fā)更多問題。讓我們嘗試通過示例,代碼片段和可視化來解釋zip()功能:從許多迭代中獲取元素,然后…… 放在一起

我們可以通過幾個列表來演示zip()的功能:

uppercase = ['A', 'B', 'C']
lowercase = ['a', 'b', 'c']

for x, y in zip(uppercase, lowercase):
 print(x, y)

輸出:

A a B b C c

但是,不限于兩個可迭代對象作為參數(shù)傳遞-我們可以添加任意多個:

uppercase = ['A', 'B', 'C']
lowercase = ['a', 'b', 'c']
numbers = [1, 2, 3]

for x, y, z in zip(uppercase, lowercase, numbers):
 print(x, y, z)

這將輸出:

A a 1 B b 2 C c 3

讓我們直觀地看一下該zip()函數(shù)在Python中的工作方式:

zip()函數(shù)的另一個重要警告是如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同:

uppercase = ['A', 'B', 'C', 'D', 'E']
lowercase = ['a', 'b', 'c', 'd']
numbers = [1, 2, 3]

for x, y, z in zip(uppercase, lowercase, numbers):
 print(x, y, z)

輸出:

A a 1 B b 2 C c 3

正如我們所看到的,即使列出了三個三元組,uppercase和lowercase列表具有5和4個元素。

要知道的重要一件事是zip()函數(shù)返回什么。

盡管似乎在調(diào)用此函數(shù)時會得到一個列表,但實(shí)際上它返回一個稱為zip object的特殊數(shù)據(jù)類型,這意味著使用索引將無法瀏覽,下面我們學(xué)習(xí)如何將其轉(zhuǎn)換為其他數(shù)據(jù)類型(例如列表)。

在此之前,我們還應(yīng)再來學(xué)習(xí)一下迭代(Iteration)、迭代器對象(iterable)、迭代器(iterator )的概念:

  • Iteration是計(jì)算機(jī)科學(xué)的通用術(shù)語。它是指對一組元素執(zhí)行一項(xiàng)操作,一次執(zhí)行一個元素。一個很好的例子是循環(huán) -它適用于每個單獨(dú)的項(xiàng)目,直到整個項(xiàng)目集運(yùn)行完畢為止。
  • Iterable是可以遍歷的對象(譯者注:在Python中所有東西都是object, 比如說變量,容器,類),iterable是可以產(chǎn)生iterator的object。
  • iterator是表示數(shù)據(jù)流的對象,它一次返回一個元素的數(shù)據(jù)。它還會記住其在迭代過程中的位置。本質(zhì)上,它控制應(yīng)如何迭代可迭代對象。

將zip()對象轉(zhuǎn)換為列表(并使用索引)

zip()函數(shù)返回一個zip對象(類似于map()操作方式)。

zip對象提供了一些有趣的功能(迭代速度比list更快),但是我們經(jīng)常需要將其轉(zhuǎn)換為list。為了做到這一點(diǎn),我們需要調(diào)用list()函數(shù):

b = ["red", "green", "blue"]
c = ["leopard", "cheetah", "jaguar"]

print(list(zip(b, c)))

輸出:

[('red', 'leopard'), ('green', 'cheetah'), ('blue', 'jaguar')]

list()函數(shù)將zip對象轉(zhuǎn)換為一個元組列表。我們可以使用索引瀏覽各個元組。出于可讀性考慮,我們首先將新列表分配給一個變量:

b = ["red", "green", "blue"]
c = ["leopard", "cheetah", "jaguar"]
new_list = list(zip(b, c))
print(new_list[0])
print(new_list[1])
print(new_list[2])

這將輸出:

('red', 'leopard') ('green', 'cheetah') ('blue', 'jaguar')

將zip()對象轉(zhuǎn)換成字典

另外,該dict()函數(shù)可用于將zip對象轉(zhuǎn)換為字典。需要注意的是,只能使用兩個zip()參數(shù)-前者產(chǎn)生key,后者產(chǎn)生value:

b = ["red", "green", "blue"]
f = ["strawberry", "kiwi", "blueberry"]

print(dict(zip(b, f)))

輸出:

{'red': 'strawberry', 'green': 'kiwi', 'blue': 'blueberry'}

解壓列表

在某些情況下,我們需要執(zhí)行相反的操作——解壓迭代器。解壓操作涉及將壓縮后的元素恢復(fù)為其原始狀態(tài)。為此,我們添加*運(yùn)算符到函數(shù)調(diào)用中。例:

a = [1, 2, 3]
b = [4, 5, 6]
zipped = zip(a, b)
list(zipped)

a2, b2 = zip(*zip(a, b))
print(a == list(a2) and b == list(b2))

輸出:

True

Zip與列表生成式(for循環(huán)潛在問題)

zip()函數(shù)與Python中的for循環(huán)一起使用的可視化

在應(yīng)用for循環(huán)后注意缺少的元素!

Python的另一個很棒的功能——列表推導(dǎo)式,可以與zip()函數(shù)結(jié)合使用。表面上看起來很簡單……

m = ["mind", "mouse", "mini"]
n = ["norm", "night", "necklace"]

[print(a, b) for a, b in zip(m, n)]

輸出:

mind norm mouse night mini necklace

看起來很簡單,似乎沒有任何錯誤,對嗎?是的

如果我們想a從列表生成式獲取參數(shù)并打印出來,我們得到a NameError的報錯提示,這是完全正常的,因?yàn)閍在列表推導(dǎo)之外不是實(shí)數(shù):

Traceback (most recent call last): File "C:\Pro\Py\tp-ex\tmp1.py", line 5, in print(a) NameError: name 'a' is not defined

但是,如果我們決定使用for循環(huán)而不是列表生成式,然后打印a,我們會得到一些奇怪的結(jié)果。請記住,for循環(huán)輸出的結(jié)果與列表生成式的結(jié)果相同。

m = ["mind", "mouse", "mini"]
n = ["norm", "night", "necklace"]

for m, n in zip(m, n):
 print(m, n)
print(m)

結(jié)果輸出是…

mind norm mouse night mini necklace mini

等等,叛逆的mini在這里干什么?事實(shí)證明,m先前引用的列表變量"mind", "mouse", "mini"被覆蓋了!因此,應(yīng)該牢記列表生成式和for循環(huán)的運(yùn)行方式完全不同。

結(jié)論

好吧,事實(shí)證明,zip()函數(shù)在 Python 中確實(shí)有一些竅門!🙂與往常一樣,鼓勵大家實(shí)際使用我們的代碼示例,而不僅是閱讀本文。如果您與代碼進(jìn)行交互并對其進(jìn)行調(diào)整,則肯定會遇到一些獨(dú)特的問題-解決它們將幫助大家更好地掌握知識。

翻譯:愛學(xué)習(xí)的胡同學(xué)原文:

 

總結(jié)

以上所述是小編給大家介紹的Python中zip()函數(shù)的解釋和可視化(實(shí)例詳解),希望對大家有所幫助!

相關(guān)文章

  • flask中過濾器的使用詳解

    flask中過濾器的使用詳解

    這篇文章主要介紹了flask中過濾器的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Python字符串對齊和判斷方法匯總

    Python字符串對齊和判斷方法匯總

    本教程將詳細(xì)介紹Python中的字符串對齊方法以及字符串判斷方法,這些方法在文本處理、格式化輸出和字符串匹配中非常實(shí)用,無論你是Python初學(xué)者還是想要鞏固基礎(chǔ)知識的程序員,這篇教程都能幫助你全面理解這些操作,需要的朋友可以參考下
    2025-04-04
  • python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進(jìn))

    python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進(jìn))

    這篇文章主要介紹了python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進(jìn)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 推薦五個常用的python圖像處理庫

    推薦五個常用的python圖像處理庫

    這篇文章主要介紹了推薦五個常用的python圖像處理庫,文章基于python的相關(guān)內(nèi)容分享圖像處理庫,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Python 字符串操作方法大全

    Python 字符串操作方法大全

    python字符串操作實(shí)方法大合集,包括了幾乎所有常用的python字符串操作,如字符串的替換、刪除、截取、復(fù)制、連接、比較、查找、分割等,需要的朋友可以參考下
    2014-03-03
  • Python生成器實(shí)現(xiàn)簡單

    Python生成器實(shí)現(xiàn)簡單"生產(chǎn)者消費(fèi)者"模型代碼實(shí)例

    這篇文章主要介紹了Python生成器實(shí)現(xiàn)簡單"生產(chǎn)者消費(fèi)者"模型代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • python之multimethod包多分派解讀

    python之multimethod包多分派解讀

    這篇文章主要介紹了python之multimethod包多分派問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Pyqt實(shí)現(xiàn)無邊框窗口拖動以及窗口大小改變

    Pyqt實(shí)現(xiàn)無邊框窗口拖動以及窗口大小改變

    這篇文章主要為大家詳細(xì)介紹了Pyqt實(shí)現(xiàn)無邊框窗口拖動及大小改變的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python mutiprocessing多線程池pool操作示例

    Python mutiprocessing多線程池pool操作示例

    這篇文章主要介紹了Python mutiprocessing多線程池pool操作,結(jié)合實(shí)例形式分析了Python多線程模塊multiprocessing進(jìn)程池相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • python命令行參數(shù)用法實(shí)例分析

    python命令行參數(shù)用法實(shí)例分析

    這篇文章主要介紹了python命令行參數(shù)用法,結(jié)合實(shí)例形式分析了Python基于optparse模塊處理命令行參數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2019-06-06

最新評論

肥城市| 乾安县| 阜宁县| 普安县| 辽阳县| 定西市| 南阳市| 三穗县| 海城市| 灵武市| 鄂温| 天长市| 深圳市| 祁连县| 新宾| 平昌县| 南川市| 盐津县| 六盘水市| 鹤峰县| 临沂市| 昭苏县| 周至县| 保山市| 蕲春县| 宿州市| 哈密市| 龙南县| 密山市| 秀山| 新余市| 凌海市| 东平县| 宁南县| 芜湖县| 吉木乃县| 仁化县| 博客| 黄梅县| 双桥区| 康平县|