Python iter() 函数返回给定对象的迭代器。
iter()
函数创建一个可以一次迭代一个元素的对象。
这些对象在与 for loop 、 while loop 等循环结合使用时很有用。
用法:
iter(object, sentinel)
参数:
iter()
函数有两个参数:
返回:
iter()
函数返回给定对象的迭代器对象。- 如果用户定义的对象没有实现
__iter__()
和__next__()
或__getitem()__
,则会引发TypeError
异常。 - 如果还提供了 sentinel 参数,则
iter()
返回一个迭代器,直到找不到 sentinel 字符。
示例 1: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: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
在这里,我们实现了一个没有StopIteration
条件的自定义可迭代对象。
但是,我们可以使用带有sentinel
参数的iter()
方法来停止迭代。如果从__next__()
返回的值等于sentinel
, StopIteration
将被提升,否则将返回该值。
相关用法
- Python iter()用法及代码示例
- Python itertools.groupby()用法及代码示例
- Python itertools.repeat()用法及代码示例
- Python calendar itermonthdays2()用法及代码示例
- Python calendar itermonthdays()用法及代码示例
- Python calendar itermonthdates()用法及代码示例
- Python calendar iterweekdays()用法及代码示例
- Python dict items()用法及代码示例
- Python string isalnum()用法及代码示例
- Python id()用法及代码示例
- Python string isidentifier()用法及代码示例
- Python numpy irr用法及代码示例
- Python calendar isleap()用法及代码示例
- Python math isclose()用法及代码示例
- Python string isupper()用法及代码示例
- Python scipy integrate.trapz用法及代码示例
- Python numpy matrix identity()用法及代码示例
- Python int转exponential用法及代码示例
- Python integer转string用法及代码示例
- Python issubclass()用法及代码示例
注:本文由纯净天空筛选整理自 Python iter()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。