所謂的迭代器型態 (iterator types) 是一種複合資料型態 (compound data type) ,其內的元素 (element) 可依序由迭代規則計算出來,因此可用於
for 迴圈 (for loop) 。
迭代器型態依據迭代器協定 (iterator protocol) 定義,也就是設計類別實需加入以下兩個方法 (method)
方法 | 描述 |
__iter__() | 回傳迭代器物件 (object) 本身 |
__next__() | 取得下一個元素值 |
舉例示範如下
class Fibs:
def __init__(self):
self.i = 0
self.j = 1
def __str__(self):
return str(self.i)
def __iter__(self):
return self
def __next__(self):
self.i, self.j = self.j, self.i + self.j
return self.i
fibs = Fibs()
for f in fibs:
print(f)
if f > 10000:
break
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:iterator.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月
執行結果如下
__iter__() 就是回傳 self 本身
def __iter__(self):
return self
__next__() 取得下一個元素,此例中就是前兩個數字相加
def __next__(self):
self.i, self.j = self.j, self.i + self.j
return self.i
Fibs 提供的是費伯納西數的迭代計算模式,因此可以很快的計算出費伯納西數列。
中英文術語對照 |
迭代器型態 | iterator types |
複合資料型態 | compound data type |
元素 | element |
for 迴圈 | for loop |
迭代器協定 | iterator protocol |
方法 | method |
物件 | object |
內建型態
- 數字型態 int float complex 按一下展開目錄
- 迭代器型態
- 序列型態 按一下展開目錄
- 字串 str 按一下展開目錄
- str.capitalize()
- str.center(width[, fillchar])
- str.count(sub[, start[, end]])
- str.encode(encoding="utf-8", errors="strict")
- str.endswith(suffix[, start[, end]])
- str.expandtabs([tabsize])
- str.find(sub[, start[, end]])
- str.format(*args, **kwargs)
- str.index(sub[, start[, end]])
- str.isalnum()
- str.isalpha()
- str.isdecimal()
- str.isdigit()
- str.isidentifier()
- str.islower()
- str.isnumeric()
- str.isprintable()
- str.isspace()
- str.istitle()
- str.isupper()
- str.join(iterable)
- str.ljust(width[, fillchar])
- str.lower()
- str.lstrip([chars])
- static str.maketrans(x[, y[, z]])
- str.partition(sep)
- str.replace(old, new[, count])
- str.rfind(sub[, start[, end]])
- str.rindex(sub[, start[, end]])
- str.rjust(width[, fillchar])
- str.rpartition(sep)
- str.rsplit([sep[, maxsplit]])
- str.rstrip([chars])
- str.split([sep[, maxsplit]])
- str.splitlines([keepends])
- str.startswith(prefix[, start[, end]])
- str.strip([chars])
- str.swapcase()
- str.title()
- str.translate(map)
- str.upper()
- str.zfill(width)
- range
- 串列 list 按一下展開目錄
- 序對 tuple
- 字節 bytes 按一下展開目錄
- 字節陣列 bytearrary 按一下展開目錄
- 集合型態 set frozenset 按一下展開目錄
- 配對型態 dict 按一下展開目錄
沒有留言:
張貼留言