Python iter() 函数用于返回一个迭代器。迭代器是一个对象,这意味着它包含多个可计数值。迭代器可以遍历所有值。这些对象在 for 循环、while 循环等循环中很有用。iter() 对象一次迭代一个元素。
iter(object, sentinel) # object can be sets,tuples etc
接受 2 个参数,其中第一个参数是可以是集合、元组等的对象。
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| 对象 | 要创建其迭代器的对象 | 必需 |
| 哨兵 | 用于表示序列结束的特殊值。 | 可选 |
如果用户定义的对象没有实现 __iter__() 和 __next__() 或 __getitem()__,则会引发 TypeError 异常。如果还提供了 sentinel 参数,则 iter() 会返回一个迭代器,直到找到 sentinel 字符。
| 输入 | 返回值 |
|---|---|
| 提供对象和哨兵 | 迭代器 |
# 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
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
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