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

python3.x?zip用法小結(jié)

 更新時間:2022年11月15日 11:33:05   作者:bitcarmanlee  
這篇文章主要介紹了python3.x?zip用法詳解,通過一個簡單例子給大家詳細(xì)講解zip使用,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

1.zip用法簡介

在python 3.x系列中,zip方法返回的為一個zip object可迭代對象。

class zip(object):
? ? """
? ? zip(*iterables) --> zip object
? ??
? ? Return a zip object whose .__next__() method returns a tuple where
? ? the i-th element comes from the i-th iterable argument. ?The .__next__()
? ? method continues until the shortest iterable in the argument sequence
? ? is exhausted and then it raises StopIteration.
? ? """

通過上面的注釋,不難看出該迭代器的兩個關(guān)鍵點:

1.迭代器的next方法返回一個元組,元組的第i個元素為各個輸入?yún)?shù)的第i個元素。

2.迭代器的next方法,遇到輸入序列中最短的那個序列迭代完畢,則會停止運(yùn)行。

為了看清楚zip的效果,我們先看個最簡單的例子

def fun0():
? ? a = ['a', 'b', 'c', 'd']
? ? b = ['1', '2', '3', '4']
? ? result = zip(a, b)
? ? print(type(result))
? ? try:
? ? ? ? while True:
? ? ? ? ? ? print(next(result))
? ? except StopIteration:
? ? ? ? pass

上面的代碼,輸出結(jié)果為

<class 'zip'>
('a', '1')
('b', '2')
('c', '3')
('d', '4')

首先可以看到的是,zip方法返回的,是一個zip對象。

zip對象是個迭代器,用next方法即可對其完成遍歷。

當(dāng)然我們也可以用for循環(huán)完成對zip對象的遍歷。

def fun00():
? ? a = ['a', 'b', 'c', 'd']
? ? b = ['1', '2', '3', '4']
? ? result = zip(a, b)
? ? for ele in result:
? ? ? ? print(ele)

('a', '1')
('b', '2')
('c', '3')
('d', '4')

2.參數(shù)不等長進(jìn)行截斷

zip方法中,如果傳入的參數(shù)不等長,則會進(jìn)行截斷,截斷的時候會取最短的那個序列,超過最短序列長度的其他序列元素,則會被舍棄掉。

def fun0():
? ? a = ['a', 'b', 'c', 'd']
? ? b = ['1', '2', '3', '4', '5', '6']
? ? result = zip(a, b)
? ? try:
? ? ? ? while True:
? ? ? ? ? ? print(next(result))
? ? except StopIteration:
? ? ? ? pass

上述的方法如果運(yùn)行,結(jié)果為

('a', '1')
('b', '2')
('c', '3')
('d', '4')

3.python3.x 與2.x中zip的不同

python3.x中,zip方法返回的是一個zip對象,本質(zhì)是一個迭代器。而在python2.x中,zip方法直接返回一個list。

返回迭代器的好處在于,可以節(jié)省list占用的內(nèi)存,只在有需要的時候再調(diào)用相關(guān)數(shù)據(jù)。

4.用zip方法構(gòu)建字典

zip方法在實際中用途非常廣泛,我們下面可以看幾個實際中常用的例子。

zip方法可以用來構(gòu)建字典。

字典包含兩部分?jǐn)?shù)據(jù):key列表與value列表。如果我們現(xiàn)在有key序列與value序列,用zip方法可以很快構(gòu)建一個字典。

def fun5():
? ? names = ['lili', 'lucy', 'tracy', 'larry']
? ? scores = [98, 10, 75, 90]
? ? my_dict = dict(zip(names, scores))
? ? print(my_dict)

{'lili': 98, 'lucy': 10, 'tracy': 75, 'larry': 90}

5.對多個序列的元素進(jìn)行排序

排序也是日常工作中的常見需求,對多個序列進(jìn)行排序而不破壞其元素的相對關(guān)系,也非常常見。下面我們來看一個常見的案例

還是以之前的數(shù)據(jù)為例

有names序列與scores序列,我們希望按照names進(jìn)行排序,同時保持對應(yīng)的scores數(shù)據(jù)。

def fun3():
? ? names = ['lili', 'lucy', 'tracy', 'larry']
? ? scores = [98, 10, 75, 90]
? ? data = sorted(list(zip(names, scores)), key=lambda x: x[0], reverse=False)
? ? print(data)

輸出的結(jié)果為

[('larry', 90), ('lili', 98), ('lucy', 10), ('tracy', 75)]

如果我們希望按照分?jǐn)?shù)逆序排,則可以按如下代碼運(yùn)行

def fun3():
? ? names = ['lili', 'lucy', 'tracy', 'larry']
? ? scores = [98, 10, 75, 90]
? ? data = sorted(list(zip(names, scores)), key=lambda x: x[1], reverse=True)
? ? print(data)

[('lili', 98), ('larry', 90), ('tracy', 75), ('lucy', 10)]

6.對多組數(shù)據(jù)進(jìn)行計算

假設(shè)我們有3個序列,sales,costs,allowances。其中利潤為銷售額-成本+補(bǔ)貼,現(xiàn)在我們想求每組利潤,就可以使用zip方法。

def fun4():
? ? sales = [10000, 9500, 9000]
? ? costs = [9000, 8000, 7000]
? ? allowances = [200, 100, 150]
? ? for sale, cost, allowance in zip(sales, costs, allowances):
? ? ? ? profit = sale - cost + allowance
? ? ? ? print(f"profit is: {profit}")

profit is: 1200
profit is: 1600
profit is: 2150

當(dāng)然我們也可以使用for循環(huán)

def fun4():
? ? sales = [10000, 9500, 9000]
? ? costs = [9000, 8000, 7000]
? ? allowances = [200, 100, 150]
? ? for sale, cost, allowance in zip(sales, costs, allowances):
? ? ? ? profit = sale - cost + allowance
? ? ? ? print(f"profit is: {profit}")
? ? for i in range(len(sales)):
? ? ? ? profit = sales[i] - costs[i] + allowances[i]
? ? ? ? print(f"profit is: {profit}")

很明顯zip方法比for循環(huán)還是要更直觀,更簡潔,更優(yōu)雅。

7.*操作符進(jìn)行解壓

我們還可以使用*操作符對zip對象進(jìn)行解壓,效果是將zip object還原至原來的對象,效果就類似于壓縮以后得解壓。

def fun():
? ? a = ['a', 'b', 'c', 'd']
? ? b = ['1', '2', '3', '4']
? ? result = list(zip(a, b))
? ? print(result)
? ? zipobj = zip(a, b)
? ? a1, a2 = zip(*zipobj)
? ? print(list(a1))
? ? print(a2)

上面代碼運(yùn)行的結(jié)果為

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

到此這篇關(guān)于python3.x zip用法詳解的文章就介紹到這了,更多相關(guān)python3 使用 zip內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中values()函數(shù)用法簡單示例

    Python中values()函數(shù)用法簡單示例

    這篇文章主要給大家介紹了關(guān)于Python中values()函數(shù)用法的相關(guān)資料,python內(nèi)置的values()函數(shù)返回一個字典中所有的值,文中給出了代碼示例,需要的朋友可以參考下
    2023-09-09
  • Python繪制七段數(shù)碼管實例代碼

    Python繪制七段數(shù)碼管實例代碼

    這篇文章主要介紹了Python繪制七段數(shù)碼管實例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • python實現(xiàn)的簡單猜數(shù)字游戲

    python實現(xiàn)的簡單猜數(shù)字游戲

    這篇文章主要介紹了python實現(xiàn)的簡單猜數(shù)字游戲,涉及Python操作隨機(jī)數(shù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • Python編程快速上手——PDF文件操作案例分析

    Python編程快速上手——PDF文件操作案例分析

    這篇文章主要介紹了Python 文件操作,結(jié)合具體實例形式分析了Python針對pdf文件的遍歷、讀寫、加密、解密等相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2020-02-02
  • Python對excel文檔的操作方法詳解

    Python對excel文檔的操作方法詳解

    這篇文章主要介紹了Python對excel文檔的操作方法,結(jié)合實例形式分析了Python基于xlrd、xlwd庫針對Excel文件的讀寫、sheet表創(chuàng)建、獲取、遍歷等相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python操作MySQL數(shù)據(jù)庫9個實用實例

    Python操作MySQL數(shù)據(jù)庫9個實用實例

    這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫9個實用實例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 使用PyTorch實現(xiàn)限制GPU顯存的可使用上限

    使用PyTorch實現(xiàn)限制GPU顯存的可使用上限

    從?PyTorch?1.4?版本開始,引入了一個新的功能,可以允許用戶為特定的?GPU?設(shè)備設(shè)置進(jìn)程可使用的顯存上限比例,下面我們就來看看具體實現(xiàn)方法吧
    2024-03-03
  • PIP和conda 更換國內(nèi)安裝源的方法步驟

    PIP和conda 更換國內(nèi)安裝源的方法步驟

    這篇文章主要介紹了PIP和conda 更換國內(nèi)安裝源的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python爬取阿拉丁統(tǒng)計信息過程圖解

    Python爬取阿拉丁統(tǒng)計信息過程圖解

    這篇文章主要介紹了Python爬取阿拉丁統(tǒng)計信息過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Python中ttkbootstrap的介紹與基本使用

    Python中ttkbootstrap的介紹與基本使用

    ttkbootstrap是一個基于?tkinter?的界面美化庫,使用這個工具可以開發(fā)出類似前端bootstrap風(fēng)格的tkinter桌面程序,下面這篇文章主要給大家介紹了關(guān)于Python中ttkbootstrap的介紹與基本使用的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評論

无为县| 迁西县| 南充市| 荆门市| 宜都市| 涿州市| 利辛县| 永吉县| 西盟| 黑河市| 德州市| 宣汉县| 安西县| 磴口县| 太仆寺旗| 黔江区| 金川县| 武宣县| 望谟县| 阳春市| 于都县| 瓦房店市| 蒲江县| 乳山市| 凉山| 封开县| 大埔县| 屯门区| 容城县| 胶州市| 历史| 金湖县| 外汇| 怀来县| 资兴市| 方城县| 阿拉尔市| 肥西县| 霸州市| 阳信县| 蓝山县|