迭代器相關的內建函數包括各種迭代器的處理,以下為列表說明
參數版本 | 功能 |
---|---|
all(i) | 判斷參數的所有元素是否都為迭代器。 |
any(i) | 判斷參數的任一元素是否為迭代器。 |
enumerate(i, start=0) | 回傳附加索引值的 enumerate 物件。 |
filter(f, i) | 回傳依 f 過濾 i 後的 filter 物件。 |
iter(o, s) | 回傳 o 的迭代器物件,或是依 s 結束符號揀取 o 的迭代器物件。 |
map(f, i) | 回傳依 f 判斷過 i 的 map 物件。 |
next(i, d) | 回傳迭代器物件 i 的下一個數值,如果無數值就回傳 d 。 |
reversed(s) | 回傳將 s 中元素排列倒轉過的 reversed 物件。 |
zip(*i) | 回傳配對過的 zip 物件。 |
all()
all(i) 判斷參數的所有元素是否都為迭代器,舉例如下
print(all("abc"))
print(all([0, 1]))
print(all((0, 1)))
print(all({1:1, 2:2}))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator01.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator01.py |
True |
False |
False |
True |
$ |
any()
any(i) 判斷參數的任一元素是否為迭代器,舉例如下
print(any("abc"))
print(any([0, 1]))
print(any((0, 1)))
print(any({1:1, 2:2}))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator02.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator02.py |
True |
True |
True |
True |
$ |
enumerate()
enumerate(i, start=0) 回傳參數 i 中所有元素附加索引值的 enumerate 物件,參數 start 為索引值的起始數字,舉例如下
data = ["A", "B", "C", "D"]
e = enumerate(data)
print(list(e))
e = enumerate(data, start=1)
print(list(e))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator03.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator03.py |
[(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D')] |
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D')] |
$ |
filter()
filter(f, i) 回傳依參數 f 過濾 i 後的 filter 物件, f 須為函數或 lambda 運算式,舉例如下
a = [11, 2, 8, 22, 6, 4, 15]
b = filter(lambda x: x > 10, a)
print(b)
for i in b:
print(i)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator04.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator04.py |
<filter object at 0x101eba358> |
11 |
22 |
15 |
$ |
iter()
iter(o, s) 回傳迭代器物件,若只有提供參數 o ,則會將 o 的元素轉化成迭代器的元素,舉例如下
a = iter("123")
print(a)
for i in a:
print(i)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator05.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator05.py |
<str_iterator object at 0x101d85ac8> |
1 |
2 |
3 |
$ |
iter(o, s) 若是提供兩個參數,第一個參數 o 必須是可呼叫物件,第二個參數 s 則是結束的回傳值,這個參數版本通常用在檔案處理上,舉例如下
with open('quotes.txt') as fp:
for line in iter(fp.readline, ''):
print(line)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator06.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator06.py |
Hello world! |
There is no spoon. |
Manners maketh the man. |
You need time to know, to forgive and to love. |
And then be a simple man. |
$ |
map()
map(f, i) ,回傳依第一個參數 f 判斷過第二個參數 i 的 map 物件, f 為函數, i 則是迭代器,舉例如下
d1 = [1, 2, 78, 34, 56]
d2 = map(lambda x: x > 50, d1)
print(d2)
print(list(d2))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator07.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator07.py |
<map object at 0x1040ba4e0> |
[False, False, True, False, True] |
$ |
next()
next(i, d) 回傳迭代器物件 i 的下一個數值,如果無數值就回傳 d ,舉例如下
d1 = [1, 3]
d2 = iter(d1)
print(next(d2, -1))
print(next(d2, -1))
print(next(d2, -1))
print(next(d2, -1))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator08.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator08.py |
1 |
3 |
-1 |
-1 |
$ |
reversed()
reversed(s) 回傳將 s 中元素排列倒轉過的 reversed 物件,舉例如下
s = "abc"
print(reversed(s))
print(list(reversed(s)))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator09.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator09.py |
<reversed object at 0x101c85ac8> |
['c', 'b', 'a'] |
$ |
zip()
zip(*i) 回傳配對過的 zip 物件,舉例如下
a = [1, 2]
b = [3, 4]
print(zip(a, b))
print(list(zip(a, b)))
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fiterator10.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fiterator10.py |
<zip object at 0x101fbddc8> |
[(1, 3), (2, 4)] |
$ |
相關教學影片