python高階特性之迭代與迭代器
阿新 • • 發佈:2018-11-02
全部測試程式碼
#! /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物件。