1. 程式人生 > >Python —— 容器、可迭代物件、迭代器、生成器

Python —— 容器、可迭代物件、迭代器、生成器

1、容器(container)
容器是一種把多個元素組織在一起的資料結構,容器中的元素可以逐個的迭代獲取。可以用 in、not in等關鍵字判斷元素是否包含在容器內。
Python中,常見的容器物件:list,set,dict,tuple,str等
在這裡插入圖片描述

2、可迭代物件(Iterable)
可直接作用於for迴圈的物件,叫做可迭代物件
常見可迭代物件:list,set,dict,tuple,str等
generator生成器 也是一個可迭代物件
可以用isinstance 去判斷一個物件是否是可迭代物件
判斷是否是可迭代物件(Iterable)
需要導包 from collections import Itearable
在這裡插入圖片描述

3、迭代器(Iterator)
可以使用next()函式呼叫並獲取下一個元素的物件叫做迭代器
不僅可以直接作用於for迴圈,也可以使用next()函式不斷呼叫並獲取下一個元素,直到取出最後一個元素,當獲取到最後一個元素的下一個元素時,會返回一個StopIteration的錯誤
可以用isinstance 去判斷一個物件是否是迭代器
在這裡插入圖片描述

轉為迭代器(Iterator):語法格式:iter(obj)

在這裡插入圖片描述

4、生成器(generator)
使用yield關鍵字的函式被稱為生成器
生成器可以認為是迭代器,使用方法與迭代器一致
yield關鍵字:將一個函式拆分成多個模組,模組與模組之間為連續的
yield可以間接控制程序或執行緒
使用yield的函式返回一個生成器物件
在這裡插入圖片描述

總結:(1)可以迴圈便利的就是可迭代物件(Iterable)
(2)擁有next()方法的就是迭代器(Iterator) 其__iter__方法返回值為self本身,可迭代物件可以用iter(obj)轉變成迭代器(Iterator)
(3)有yield關鍵字的函式,就是生成器(generator),其返回一個生成器物件