'''列表迭代的本質:__iter()__函式返回乙個迭代器,然後可以呼叫迭代器上的next方法'''arr = [1,2,3,4,5]
arr_iterator = arr.__iter__()
print(arr_iterator.__next__())
print(next(arr_iterator))
'''乙個典型的迭代器實現。例子來自《流暢的python》.'''import re
import reprlib
re_word = re.compile('\w+')
class sentence:
def __init__(self,text):
self.text = text
self.words = re_word.findall(text)
def __repr__(self):
return 'sentence(%s)' %reprlib.repr(self.text)
def __iter__(self):
return sentenceiterator(self.words)
class sentenceiterator:
def __init__(self,words):
self.words = words
self.index = 0
def __next__(self):
try:
word = self.words[self.index]
except indexerror:
raise stopiteration()
self.index += 1
return word
def __iter__(self):
return self
s = sentence('abddd a dd dw')
for i in s:
print(i)
'''用生成器建立的迭代物件。'''def frange(start, stop, increment):
x = start
while x < stop:
yield x
x += increment
for i in frange(0,5,0.5):
print(i)
'''用生成器實現費波切納演算法'''import sys
def fibonacci(n): # 生成器函式 - 斐波那契
a, b, counter = 0, 1, 0
while true:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是乙個迭代器,由生成器返回生成
while true:
try:
print(next(f), end=" ")
except stopiteration:
sys.exit()
生成器和迭代器
可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...
迭代器和生成器
1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...
生成器和迭代器
1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...