1. 程式人生 > >python高階特性之迭代與迭代器

python高階特性之迭代與迭代器

全部測試程式碼

#! /usr/bin/env python3
#_*_ conding:utf-8 _*_

迭代:Iterable
#python中使用for ... in ...來迭代物件
#python的for迴圈抽象程度高,不僅可作用在list和tuple上,還可以在任何可迭代的物件上,比如字串

d={ 'a':1,'b':2,'c':3}

#預設迭代的是key
for key in d:
    print('--key---',key)
	
#也可以迭代value
for value in d.values():
	print('---value---',value)
#key value一起

for k,v in d.items():
	print('key--',k,'value---',v)
	
#迭代字串

for s in 'ABC':
	print('s--',s)

from collections import Iterable
#判斷一個物件是否為可迭代物件
i = isinstance('ABC',Iterable)
print('是否為可迭代物件--',i)


#list下標迴圈

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


#for迴圈中引用兩個變數
for x,y in [(1,'a'),(2,'b'),(3,'c')]:
	print(x,y)

在這裡插入圖片描述

迭代器:Iterator

直接作用於for迴圈的資料型別有以下幾種:
一類是集合資料型別,如list、tuple、dict、set、str等;
一類是generator,包括生成器和帶yield的generator function。
這些可以直接作用於for迴圈的物件統稱為可迭代物件:Iterable。
可以使用isinstance()判斷一個物件是否是Iterable物件

凡是可作用於for迴圈的物件都是Iterable型別;
凡是可作用於next()函式的物件都是Iterator型別,它們表示一個惰性計算的序列;
集合資料型別如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函式獲得一個Iterator物件。

參考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143178254193589df9c612d2449618ea460e7a672a366000