日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

深入了解Python enumerate和zip

瀏覽:190日期:2022-07-17 10:24:04

enumerate

首先介紹的是enumerate函數(shù)。

在我們日常編程的過程當中,經(jīng)常會遇到一個問題。

在C語言以及一些古老的語言當中是沒有迭代器這個概念的,所以我們要遍歷數(shù)組或者是容器的時候,往往只能通過下標。有了迭代器之后,我們遍歷的過程方便了很多,我們可以直接用一個變量去迭代一個容器當中的值。最簡單的例子就是數(shù)組的遍歷,比如我們要遍歷items這個數(shù)組。我們可以直接:

for item in items:

通過迭代器的方式我們可以很輕松地遍歷數(shù)組,而不再需要下標,也不需要計算數(shù)組的長度了。但是如果我們在循環(huán)體當中需要知道元素的下標該怎么辦?

難道我們真的只能在下標和迭代器當中選擇一個嗎,比如在循環(huán)體的外面添加一個變量來記錄下標?

idx = 0for item in items: operation() idx += 1

這樣可以解決問題,但是很麻煩,一點也不簡潔,用專業(yè)的話來說一點也不pythonic(符合Python標準的代碼)。為了追求pythonic,于是有了enumerate函數(shù),來解決了我們又想直接迭代又需要知道元素下標的情形。

它的用法也很簡單,我們把需要迭代的對象或者迭代器傳入enumerate函數(shù)當中,它會為我們創(chuàng)建一個新的迭代器,同時返回下標以及迭代的內容。我們來看一個例子:

for i, item in enumerate(items):

除此之外,enumerate還支持傳入?yún)?shù)。比如在某些場景當中,我們希望下標從1開始,而不再是0開始,我們可以額外多傳入一個參數(shù)實現(xiàn)這點:

for i, item in enumerate(items, 1):

循環(huán)是我們編程的時候必不可少的操作,也正因此,enumerate函數(shù)使用非常廣泛。但是有一點需要注意,如果我們迭代的是一個多元組數(shù)組,我們需要注意要將index和value區(qū)分開。舉個例子:

data = [(1, 3), (2, 1), (3, 3)]

在不用enumerate的時候,我們有兩種迭代方式,這兩種都可以運行。

for x, y in data:for (x, y) in data:

但是如果我們使用enumerate的話,由于引入了一個index,我們必須要做區(qū)分,否則會報錯,所以我們只有一種迭代方式:

for i, (x, y) in enumerate(data):

zip

接下來要介紹的另一個函數(shù)同樣是方便我們迭代的,不過它針對的是另一個場景——多對象迭代。

它的應用場景非常簡單,就是我們想要同時迭代多份數(shù)據(jù),比如用戶的名字和用戶的職業(yè)數(shù)據(jù)是分開的,我們希望同時遍歷一個用戶的職業(yè)和名字。如果不使用zip,我們可能只能放棄迭代器回到傳統(tǒng)的下標遍歷的模式了。這樣當然是可以的,不過有兩個小問題,第一個小問題當然是代碼的可讀性變差了,不夠pythonic,第二個問題是我們需要維護兩個容器長度不一樣的情況,會增加額外的代碼。而使用zip,可以同時解決以上兩個問題。

我們來看一個例子:

names = [’xiaoming’, ’xiaohua’, ’xiaohei’, ’xiaoli’]jobs = [’coach’, ’student’, ’student’, ’student’, ’professor’]for name, job in zip(names, jobs): print(name, job)

最后輸出的結果是人名和職業(yè)的tuple:

xiaoming coachxiaohua studentxiaohei studentxiaoli student

上面舉的例子當中,names和jobs的長度其實是不一致的,在使用了zip的情況下,會自動替我們按照其中較短的那個進行截斷。如果我們不希望截斷,我們也可以使用itertools下的zip_longest來代替zip:

from itertools import zip_longestfor name, job in zip_longest(names, jobs):

這樣的話長度不夠的元素會以None來填充,zip_longest提供了一個參數(shù)fillvalue,可以填充成我們指定的值。

無論是zip還是zip_longest,都可以支持多迭代器的遍歷。比如:

names = [’xiaoming’, ’xiaohua’, ’xiaohei’, ’xiaoli’]jobs = [’coach’, ’student’, ’student’, ’student’, ’professor’]hobbies = [’footbal’, ’tennis’, ’badminton’, ’basketbal’]for name, job, hobby in zip(names, jobs, hobbies): print(name, job, hobby)

zip除了方便我們迭代遍歷之外,另一個很大的用處是可以很方便地生成dict。比如剛才的例子當中,我們想生成一個名稱和職業(yè)的dict,一般的辦法當然是先定義一個dict,然后遍歷所有的key和value,來生成dict。然而使用zip,我們可以將這個操作簡化到一行代碼:

jobDict = dict(zip(names, jobs))

需要注意的是,我們調用zip返回的結果其實是一個迭代器,我們在轉化成dict的時候自動遍歷了迭代器當中的內容。比如我們如果直接打印出zip調用結果的話,就會發(fā)現(xiàn)屏幕上輸出的是一個迭代器的地址:

print(zip(names, jobs))>>> <zip object at 0x10ec93b40>

我們想要獲得它的內容,需要將它手動轉成list:

print(list(zip(names, jobs)))>>> [(’xiaoming’, ’coach’), (’xiaohua’, ’student’), (’xiaohei’, ’student’), (’xiaoli’, ’student’)]

無論是enumerate還是zip其實底層都是基于迭代器實現(xiàn)的,從原理上來說并沒有什么太深奧的內容,而且我們不使用它們也不影響我們寫代碼。但是Python之所以是Python,之所以很多人稱道它簡潔的語言和邏輯,離不開我們廣泛地使用這些簡化代碼邏輯的工具和方法。因此我們加以了解是非常有必要的,希望大家都能寫出pythonic的代碼,不僅寫代碼能力強,而且代碼本身也漂亮。

以上就是深入了解Python enumerate和zip的詳細內容,更多關于Python enumerate和zip的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲精品v| 精品入口麻豆88视频| 国产精品久久久久9999高清| 欧美一区精品| 日韩精品乱码av一区二区| 亚洲欧美日本国产| 亚洲男人在线| 欧美一级全黄| 日韩一区二区三区在线看| 免费在线观看成人| 91精品美女| 欧美激情视频一区二区三区免费| 久久av网址| 国产高清不卡| 久久久久国产精品一区三寸| 99成人在线视频| 黄色成人精品网站| 亚洲精品看片| 国产福利一区二区精品秒拍 | 日韩高清欧美| 1024精品一区二区三区| 91精品一区国产高清在线gif| 免费久久精品| 青青伊人久久| 国内激情久久| 日韩精品视频网站| 9999国产精品| 亚洲五月综合| 高清久久精品| 日韩av电影一区| 日韩av片子| 日韩中文av| 99视频精品全国免费| 日韩三级一区| 在线精品视频在线观看高清| 国产精品66| 欧美不卡在线| 国产精品tv| 久久夜色精品| 欧美日韩尤物久久| 国产精品久一| 亚洲精品在线二区| 91成人网在线观看| 夜鲁夜鲁夜鲁视频在线播放| 日韩精品国产精品| 国产午夜精品一区二区三区欧美 | 日本久久精品| 青青青国产精品| 免费一区二区视频| 国产一区日韩一区| 福利一区二区三区视频在线观看| 日本不卡中文字幕| 蜜臀va亚洲va欧美va天堂 | 免费高清在线一区| 欧美日本不卡| 99国产精品久久久久久久| 正在播放日韩精品| 国产一区二区三区视频在线| 日韩av成人高清| 亚州av日韩av| 91精品99| 亚洲美洲欧洲综合国产一区| 久久人人精品| 三上悠亚国产精品一区二区三区 | 在线精品一区二区| 国产精品毛片在线| 日韩成人av影视| 久久亚洲视频| 99国产精品| 伊人久久大香线蕉av超碰演员| 电影亚洲精品噜噜在线观看| 精品视频一二| 久久国际精品| 蜜桃久久av| 欧美1区免费| 日本久久成人网| 久久av中文| 日韩av影院| 亚洲精品看片| 亚洲成人av观看| 西西人体一区二区| 99视频精品全部免费在线视频| 中文字幕视频精品一区二区三区| 国产日韩欧美一区二区三区在线观看| 中文在线а√在线8| 国产一卡不卡| 成人午夜在线| 国产欧美日韩影院| 欧美视频久久| 国产精品激情电影| 亚洲三级毛片| 日韩高清在线一区| 亚洲九九精品| 国产调教精品| 精品国产乱码| 黑森林国产精品av| 久久av资源| 在线一区视频观看| 日本午夜大片a在线观看| 福利一区和二区| 精品三级av| 婷婷六月综合| 国产精品极品在线观看| 国产欧美一区二区三区国产幕精品 | 青青久久av| 国产欧美日韩一级| 日韩一级不卡| 久久久久美女| 免费一级欧美在线观看视频 | 蜜桃久久av一区| 91精品啪在线观看国产18| 国产日产精品_国产精品毛片| 一本一本久久| 国产精品毛片久久| 欧美自拍一区| 蜜桃视频免费观看一区| 91精品啪在线观看国产18| 国产精品亚洲二区| 亚洲精品日韩久久| 怡红院精品视频在线观看极品| 日韩中文首页| 日韩一区二区三区免费播放| 你懂的国产精品永久在线| 日韩精品a在线观看91| 日本欧美在线看| 国产亚洲福利| 视频一区国产视频| 中文一区一区三区免费在线观| 蜜桃精品在线| 99精品小视频| 国产美女精品| 伊人精品久久| 少妇精品在线| 国产精品qvod| 精品国产一区二区三区性色av| 国产精品一线| 福利一区二区免费视频 | 日韩综合一区二区| 亚洲天堂免费| 日韩高清不卡一区二区| 日韩福利在线观看| 亚洲一区欧美| 日韩精品一区二区三区av | 电影亚洲精品噜噜在线观看| 日韩在线免费| 午夜日韩在线| 欧美片网站免费| 首页国产精品| 午夜久久黄色| 777久久精品| 91精品韩国| 亚洲精品护士| 国产调教一区二区三区| 欧美1区二区| 亚洲成人精品| 日韩欧美美女在线观看| 久久亚洲人体| 日本欧美在线看| 久久99国产精品视频| 亚洲欧美一区在线| 欧美亚洲网站| 欧美日韩国产免费观看视频| 亚洲另类av| 精品免费av| 视频一区免费在线观看| 国产精品啊v在线| 亚洲二区三区不卡| 亚洲三级精品| 99热国内精品| 久久精品一区二区三区中文字幕| 欧美另类综合| yellow在线观看网址| 亚洲精品影院在线观看| 久久久777| 精品久久网站| 国产亚洲精品美女久久| 久久亚洲影院| 亚洲激情偷拍| 久久久精品五月天| 97欧美在线视频| 国产精品二区影院| 国产精品丝袜xxxxxxx| 国产一区二区三区亚洲综合| 日本伊人午夜精品| 亚洲午夜免费| 欧美精品一卡| 波多野结衣一区| 日本美女一区| av资源亚洲| 日韩中文欧美| 成人va天堂| 中文字幕一区久| 国内精品伊人| 国产亚洲一区二区三区不卡| 午夜电影一区| 国产欧美在线观看免费| 清纯唯美亚洲综合一区| 亚洲日本久久| 日本a级不卡| 欧美激情日韩|