欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 迭代,for...in遍歷,迭代原理與應(yīng)用示例

 更新時間:2019年10月12日 10:39:32   作者:houyanhua1  
這篇文章主要介紹了Python 迭代,for...in遍歷,迭代原理與應(yīng)用,結(jié)合實例形式分析了Python迭代與遍歷的相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下

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

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

demo.py(迭代,遍歷):

import time
from collections import Iterable
from 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()會調(diào)用對象的__iter__方法
# print("判斷classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator))
# print(next(classmate_iterator))  # next()會調(diào)用對象的__next__方法
for name in classmate: # 遍歷時會先調(diào)用classmate的__iter__方法(必須返回Iterator對象)。
  print(name)  # 遍歷出的name就是返回的Iterator對象的__next__方法的返回值
  time.sleep(1) # 當(dāng)__next__拋出StopIteration異常時,for遍歷會停止迭代

運行結(jié)果:

老王
王二
張三

demo.py(迭代的應(yīng)用):

li = list(可迭代對象)    # 將可迭代對象轉(zhuǎn)換成list類型。 底層就是通過迭代實現(xiàn)的。
print(li)
tp = tuple(可迭代對象)    # 將可迭代對象轉(zhuǎn)換成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)  # 將可迭代對象轉(zhuǎn)換成list類型。 底層就是通過迭代實現(xiàn)的。
print(li)

輸出:

['老王', '王二', '張三']

示例2:

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("張三")
tp = tuple(classmate)  # 將可迭代對象轉(zhuǎn)換成tuple類型。
print(tp)

輸出:

('老王', '王二', '張三')

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Python中for后接else的語法使用

    Python中for后接else的語法使用

    這篇文章主要介紹了Python中for后接else的語法使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python屬于哪種語言

    python屬于哪種語言

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python屬于哪種語言的一篇基礎(chǔ)內(nèi)容文章,有興趣的朋友們可以參考下。
    2020-08-08
  • 基于python實現(xiàn)的百度新歌榜、熱歌榜下載器(附代碼)

    基于python實現(xiàn)的百度新歌榜、熱歌榜下載器(附代碼)

    這篇文章主要介紹了基于python實現(xiàn)的百度新歌榜、熱歌榜下載器(附代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python?pygame繪制游戲圖像

    Python?pygame繪制游戲圖像

    這篇文章主要介紹了Python?pygame繪制游戲圖像,文章圍繞主題展開pygame模塊完成飛機大戰(zhàn)游戲的實戰(zhàn)開發(fā)的案例詳情,需要的朋友可以參考一下
    2022-08-08
  • python 兩種方法修改文件的創(chuàng)建時間、修改時間、訪問時間

    python 兩種方法修改文件的創(chuàng)建時間、修改時間、訪問時間

    這篇文章主要介紹了python 如何修改文件的創(chuàng)建時間、修改時間、訪問時間的兩種方法,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • 使用python加密主機文件幾種方法實現(xiàn)

    使用python加密主機文件幾種方法實現(xiàn)

    本文主要介紹了使用python加密主機文件幾種方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python入門之基礎(chǔ)語法詳解

    Python入門之基礎(chǔ)語法詳解

    這篇文章主要介紹了Python入門之基礎(chǔ)語法詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很大的幫助喲,需要的朋友可以參考下
    2021-05-05
  • 利用Python實現(xiàn)從PDF到CSV的轉(zhuǎn)換

    利用Python實現(xiàn)從PDF到CSV的轉(zhuǎn)換

    將PDF轉(zhuǎn)換為CSV極大地提升了數(shù)據(jù)的實用價值,Python作為一種強大的編程語言,能夠高效完成這一轉(zhuǎn)換任務(wù),本文將介紹如何利用Python實現(xiàn)從PDF到CSV的轉(zhuǎn)換,需要的朋友可以參考下
    2024-07-07
  • python中dtypes和type()函數(shù)的區(qū)別示例詳解

    python中dtypes和type()函數(shù)的區(qū)別示例詳解

    type()是python內(nèi)置的函數(shù),type()返回數(shù)據(jù)結(jié)構(gòu)類型(list、dict、numpy.ndarray 等),dtype返回數(shù)據(jù)元素的數(shù)據(jù)類型(int、float等),這篇文章主要給大家介紹了關(guān)于python中dtypes和type()函數(shù)區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Python列表對象實現(xiàn)原理詳解

    Python列表對象實現(xiàn)原理詳解

    這篇文章主要介紹了Python列表對象實現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論