日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一篇文章帶你了解Python的迭代知識

 一、前言

大家好,我是Go進(jìn)階者。如果給定一個(gè)list或tuple,可以通過for循環(huán)來遍歷這個(gè)list或tuple,這種遍歷稱為迭代(Iteration)。

創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都做網(wǎng)站、網(wǎng)站制作,微信平臺小程序開發(fā),網(wǎng)頁設(shè)計(jì)制作,手機(jī)網(wǎng)站制作設(shè)計(jì),網(wǎng)絡(luò)營銷推廣幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長。

二、案例

在Python中,迭代是通過for … in來完成的,而很多語言比如C或者Java,迭代list是通過下標(biāo)完成的。

比如Java代碼:

 
 
 
 
  1. for (i=0; i
  2. n = list[i]; 

注:

可以看出,Python的for循環(huán)抽象程度要高于Java的for循環(huán),因?yàn)镻ython的for循環(huán)不僅可以用在list或tuple上,還可以作用在其他可迭代對象上。

list這種數(shù)據(jù)類型雖然有下標(biāo),但很多其他數(shù)據(jù)類型是沒有下標(biāo)的,但是,只要是可迭代對象,無論有無下標(biāo),都可以迭代,

比如dict就可以迭代。

 
 
 
 
  1. d = {'a': 1, 'b': 2, 'c': 3} 
  2.  for key in d:    
  3.    print(key) 

注:

因?yàn)閐ict的存儲不是按照list的方式順序排列,所以,迭代出的結(jié)果順序很可能不一樣。

默認(rèn)情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時(shí)迭代key和value,可以用for k, v in d.items()。

1. 字符串也是可迭代對象。

因此,也可以作用于for循環(huán):

 
 
 
 
  1. for ch in 'ABC':    
  2.   print(ch) 

所以,當(dāng)使用for循環(huán)時(shí),只要作用于一個(gè)可迭代對象,for循環(huán)就可以正常運(yùn)行,而不太關(guān)心該對象究竟是list還是其他數(shù)據(jù)類型。

那么,如何判斷一個(gè)對象是可迭代對象呢?方法是通過collections模塊的Iterable類型判斷:

 
 
 
 
  1. from collections import Iterable 
  2. print(isinstance('abc', Iterable))  # str是否可迭代True 
  3. print(isinstance([1, 2, 3], Iterable))  # list是否可迭代True 
  4. print(isinstance(123, Iterable) ) # 整數(shù)是否可迭代False 

如果要對list實(shí)現(xiàn)類似Java那樣的下標(biāo)循環(huán)怎么辦?

Python內(nèi)置的enumerate函數(shù)可以把一個(gè)list變成索引-元素對,這樣就可以在for循環(huán)中同時(shí)迭代索引和元素本身:

 
 
 
 
  1. for i, value in enumerate(['A', 'B', 'C']):   
  2.   print(i, value) 

上面的for循環(huán)里,同時(shí)引用了兩個(gè)變量,在Python里是很常見的,

比如下面的代碼:

 
 
 
 
  1. for x, y in [(1, 1), (2, 4), (3, 9)]:     
  2.   print(x, y) 

2. 迭代dict的key和value

了解了如何迭代 dict 的key和value,那么,在一個(gè) for 循環(huán)中,能否同時(shí)迭代 key和value?答案是肯定的。

首先,看看 dict 對象的 items() 方法返回的值:

 
 
 
 
  1. d = {'Adam': 95, 'Lisa': 85, 'Bart': 59} 
  2. print(d.items()) 

可以看到,items() 方法把dict對象轉(zhuǎn)換成了包含tuple的list,對這個(gè)list進(jìn)行迭代,可以同時(shí)獲得key和value:

 
 
 
 
  1. for key, value in d.items(): 
  2.     print(  key, ':', value) 

注:

和values() 有一個(gè) itervalues() 類似, items() 也有一個(gè)對應(yīng)的 iteritems(),iteritems() 不把dict轉(zhuǎn)換成list,而是在迭代過程中不斷給出 tuple。

所以, iteritems() 不占用額外的內(nèi)存。

三、總結(jié)

本文基于Python基礎(chǔ),介紹了Python 迭代的使用。任何可迭代對象都可以作用于for循環(huán),包括自定義的數(shù)據(jù)類型,只要符合迭代條件,就可以使用for循環(huán)。通過案例的分析,介紹了兩種常見 迭代的方式。在實(shí)際操作中遇到的難點(diǎn),提供有效的解決方法。

歡迎大家積極嘗試,有時(shí)候看到別人實(shí)現(xiàn)起來很簡單,但是到自己動手實(shí)現(xiàn)的時(shí)候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。

代碼很簡單,希望對你學(xué)習(xí)有幫助。


網(wǎng)站名稱:一篇文章帶你了解Python的迭代知識
分享路徑:http://www.dlmjj.cn/article/coepocs.html