国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python通過for循環理解迭代器和生成器實例詳解

2020-02-16 01:10:56
字體:
來源:轉載
供稿:網友

本文實例講述了Python通過for循環理解迭代器和生成器。分享給大家供大家參考,具體如下:

迭代器

可迭代對象

通過 for…in… 循環依次拿到數據進行使用的過程稱為遍歷,也叫迭代。我們把可以通過 for…in… 語句迭代讀取數據的對象稱之為可迭代對象。

- 通過 isinstance()可以判斷一個對象是否可以迭代

# 判斷列表print(isinstance([], Iterable)

打印結果為 True 即為可迭代對象。

- 自定義一個能容納數據的類,測試該類的可迭代性

import collectionsclass MyClassmate(object):  def __init__(self):    self.names = []  def add(self, name):    self.names.append(name)# 創建 MyClassmate對象my_classmate = MyClassmate()my_classmate.add("小王")my_classmate.add("小李")my_classmate.add("小張")# 判斷MyClassmate是否為可迭代對象print("是否為可迭代對象:",isinstance(my_classmate, collections.Iterable))# 迭代數據for temp in my_classmate:  print(temp)

運行結果:

是否為可迭代對象: False
Traceback (most recent call last):
    for temp in my_classmate:
TypeError: 'MyClassmate' object is not iterable

封裝一個可以存放多條數據的類型是不可迭代的

何為可迭代對象

我們分析對可迭代對象進行迭代使用的過程,發現每迭代一次(即在 for…in… 中每循環一次)都會返回對象中的下一條數據,一直向后讀取數據直到迭代了所有數據后結束。那么,在這個過程中就應該有一個"人"去記錄每次訪問到了第幾條數據,以便每次迭代都可以返回下一條數據。我們把這個能幫助我們進行數據迭代的"人"稱為迭代器 (Iterator)。 可迭代對象的本質就是提供一個這樣的中間"人"即迭代器幫助我們對其進行迭代遍歷使用。 可迭代對象通過__iter__方法向我們提供一個迭代器,在迭代一個可迭代對象的時候,實際上就是先獲取該對象提供的一個迭代器,然后通過這個迭代器來依次獲取對象中的每一個數據.

1.可迭代對象的本質就是提供一個這樣的中間"人"即迭代器幫助我們對其進行迭代遍歷使用

2.可迭代對象是一個具備了__iter__方法的對象,通過__iter__方法獲取可迭代對象的迭代器

from collections import Iterableclass MyClassmate(object):  def __init__(self):    self.names = []  def add(self, name):    self.names.append(item)  def __iter__(self):    """空實現該方法"""    return None# 創建 MyClassmate對象my_classmate = MyClassmate()my_classmate.add("小王")my_classmate.add("小李")my_classmate.add("小張")# 判斷MyClassmate是否為可迭代對象print(isinstance(my_classmate, Iterable))            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 手游| 阿克| 恭城| 安庆市| 长岭县| 车致| 民权县| 黄平县| 区。| 申扎县| 宜都市| 温泉县| 惠东县| 石河子市| 绥芬河市| 宁晋县| 买车| 酉阳| 磴口县| 旬邑县| 柳州市| 洛阳市| 甘南县| 峨边| 应城市| 黑河市| 敦煌市| 建阳市| 营山县| 阳泉市| 新泰市| 冕宁县| 香港| 平泉县| 兰西县| 长治县| 泉州市| 察哈| 威信县| 定远县| 昌图县|