python iter()
函數有助于返回迭代器。迭代器是一個對象,這意味著它包含許多可計數的值。迭代器可以遍歷所有的值。這些對象對于循環很有用,比如 for 循環、while 循環等等。iter()
對象一次迭代一個元素。
**iter(object, sentinel)** # object can be sets,tuples etc
iter()
參數:
取 2 個參數,其中第一個參數是可以是集合、元組等的對象。
參數 | 描述 | 必需/可選 |
---|---|---|
目標 | 必須創建迭代器的對象 | 需要 |
哨兵 | 用于表示序列結束的特殊值。 | 可選擇的 |
iter()
返回值
如果用戶定義的對象沒有實現__iter__()
、__next__()
或__getitem()__
,則會引發類型錯誤異常。如果還提供了 sentinel 參數,iter()
將返回一個迭代器,直到找不到 sentinel 字符。
| 投入 | 返回值 | | 對象和哨兵都給出了 | 迭代程序 |
Python 中iter()
方法的示例
示例 Python iter()
的工作原理
# list of vowels
vowels = ['a', 'e', 'i', 'o', 'u']
vowels_iter = iter(vowels)
print(next(vowels_iter)) # 'a'
print(next(vowels_iter)) # 'e'
print(next(vowels_iter)) # 'i'
print(next(vowels_iter)) # 'o'
print(next(vowels_iter)) # 'u'
輸出:
a
e
i
o
u
示例 2:自定義對象的iter()
class PrintNumber:
def __init__(self, max):
self.max = max
def __iter__(self):
self.num = 0
return self
def __next__(self):
if(self.num >= self.max):
raise StopIteration
self.num += 1
return self.num
print_num = PrintNumber(3)
print_num_iter = iter(print_num)
print(next(print_num_iter)) # 1
print(next(print_num_iter)) # 2
print(next(print_num_iter)) # 3
# raises StopIteration
print(next(print_num_iter))
輸出:
1
2
3
Traceback (most recent call last):
File "", line 23, in
File "", line 11, in __next__
StopIteration
示例 3:帶有 sentinel 參數的iter()
class DoubleIt:
def __init__(self):
self.start = 1
def __iter__(self):
return self
def __next__(self):
self.start *= 2
return self.start
__call__ = __next__
my_iter = iter(DoubleIt(), 16)
for x in my_iter:
print(x)
輸出:
2
4
8