麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python 迭代,for...in遍歷,迭代原理與應用示例

2019-11-02 14:08:37
字體:
來源:轉載
供稿:網(wǎng)友

本文實例講述了Python 迭代,for...in遍歷,迭代原理與應用。分享給大家供大家參考,具體如下:

迭代是訪問集合元素的一種方式。什么時候訪問元素,什么時候再迭代,比一次性取出集合中的所有元素要節(jié)約內(nèi)存。特別是訪問大的集合時,用迭代的方式訪問,比一次性把集合都讀到內(nèi)存要節(jié)省資源。

demo.py(迭代,遍歷):

import timefrom collections import Iterablefrom collections import Iterator# 有__iter__方法的類是Iterable(可迭代的)。# 既有__iter__方法又有__next__方法是Iterator(迭代器)。class Classmate(object):  def __init__(self):    self.names = list()    self.current_num = 0  def add(self, name):    self.names.append(name)  def __iter__(self):    """Iterable對象必須實現(xiàn)__iter__方法"""    return self # __iter__方法必須返回一個Iterator(既有__iter__方法,又有__next__方法)  # __next__的返回值就是for循環(huán)遍歷出的變量值  def __next__(self):    if self.current_num < len(self.names):      ret = self.names[self.current_num]      self.current_num += 1      return ret    else:      raise StopIteration # 拋出StopIteration異常時,for遍歷會停止迭代classmate = Classmate()classmate.add("老王")classmate.add("王二")classmate.add("張三")# print("判斷classmate是否是可以迭代的對象:", isinstance(classmate, Iterable))# classmate_iterator = iter(classmate) # iter()會調用對象的__iter__方法# print("判斷classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator))# print(next(classmate_iterator))  # next()會調用對象的__next__方法for name in classmate: # 遍歷時會先調用classmate的__iter__方法(必須返回Iterator對象)。  print(name)  # 遍歷出的name就是返回的Iterator對象的__next__方法的返回值  time.sleep(1) # 當__next__拋出StopIteration異常時,for遍歷會停止迭代

運行結果:

老王
王二
張三

demo.py(迭代的應用):

li = list(可迭代對象)    # 將可迭代對象轉換成list類型。 底層就是通過迭代實現(xiàn)的。
print(li)
tp = tuple(可迭代對象)    # 將可迭代對象轉換成tuple類型。
print(tp)
# for ... in 可迭代對象     # for遍歷也是通過迭代實現(xiàn)的

如上例改寫如下:

示例1:

class Classmate(object):  def __init__(self):    self.names = list()    self.current_num = 0  def add(self, name):    self.names.append(name)  def __iter__(self):    """Iterable對象必須實現(xiàn)__iter__方法"""    return self # __iter__方法必須返回一個Iterator(既有__iter__方法,又有__next__方法)  # __next__的返回值就是for循環(huán)遍歷出的變量值  def __next__(self):    if self.current_num < len(self.names):      ret = self.names[self.current_num]      self.current_num += 1      return ret    else:      raise StopIteration # 拋出StopIteration異常時,for遍歷會停止迭代classmate = Classmate()classmate.add("老王")classmate.add("王二")classmate.add("張三")li = list(classmate)  # 將可迭代對象轉換成list類型。 底層就是通過迭代實現(xiàn)的。print(li)

輸出:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 毛片网站网址 | 国产超碰人人做人人爱ⅴa 国产精品久久久久久久hd | 在线播放免费视频 | 国产精品av久久久久久久久久 | 一道本不卡一区 | 欧美一区二区片 | 久久成人福利 | 一级做受大片免费视频 | 91黄瓜视频 | 55夜色66夜色国产精品视频 | 国产精品久久久久久久hd | 日本在线精品视频 | 久久福利剧场 | 国产免费久久久 | 久久福利在线 | 在线a免费观看 | 日韩视频一区二区在线观看 | 欧美一级网| 全视频tv | 婷婷一区二区三区 | 在线高清中文字幕 | 国产在线精品一区二区 | 亚洲小视频在线 | 久久久tv| 久久丝袜脚交足黄网站免费 | 成人一级黄色大片 | 91av在线免费播放 | 精品国产一区二区三区四区在线 | 激情91| 国产成人高潮免费观看精品 | 在线成人www免费观看视频 | 一边吃奶一边摸下娇喘 | 精品一区二区三区不卡 | 97超级碰碰人国产在线观看 | 欧美日韩激情 | 日韩视频二区 | 青草视频在线观看视频 | 久久亚洲精品久久国产一区二区 | 2021国产精品视频 | 亚洲乱妇19p| 一级免费黄色免费片 |