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

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

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

1.zip用法簡(jiǎn)介

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

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.
? ? """

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

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

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

為了看清楚zip的效果,我們先看個(gè)最簡(jiǎn)單的例子

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方法返回的,是一個(gè)zip對(duì)象。

zip對(duì)象是個(gè)迭代器,用next方法即可對(duì)其完成遍歷。

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

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)行截?cái)?/h2>

zip方法中,如果傳入的參數(shù)不等長,則會(huì)進(jìn)行截?cái)?,截?cái)嗟臅r(shí)候會(huì)取最短的那個(gè)序列,超過最短序列長度的其他序列元素,則會(huì)被舍棄掉。

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方法返回的是一個(gè)zip對(duì)象,本質(zhì)是一個(gè)迭代器。而在python2.x中,zip方法直接返回一個(gè)list。

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

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

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

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

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

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.對(duì)多個(gè)序列的元素進(jìn)行排序

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

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

有names序列與scores序列,我們希望按照names進(jìn)行排序,同時(shí)保持對(duì)應(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.對(duì)多組數(shù)據(jù)進(jìn)行計(jì)算

假設(shè)我們有3個(gè)序列,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)還是要更直觀,更簡(jiǎn)潔,更優(yōu)雅。

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

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

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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

    Python對(duì)excel文檔的操作方法詳解

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

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

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

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

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

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

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

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

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

    Python中ttkbootstrap的介紹與基本使用

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

最新評(píng)論

蒙山县| 阳新县| 万荣县| 都江堰市| 桂林市| 专栏| 阿拉善盟| 江孜县| 休宁县| 宾川县| 太湖县| 格尔木市| 霞浦县| 广州市| 道真| 合作市| 安庆市| 永昌县| 汝阳县| 灌阳县| 四平市| 大渡口区| 仁化县| 南汇区| 定兴县| 颍上县| 五寨县| 巴林左旗| 贺州市| 五家渠市| 布拖县| 乐山市| 海口市| 沂水县| 九龙坡区| 泸西县| 买车| 和政县| 耿马| 龙泉市| 聊城市|