外贸企业网站红色风格,手机站制作的网站架构,做网站找客户,什么叫网站建设服务Python 迭代器
迭代器是一种对象#xff0c;该对象包含值的可计数数字。
迭代器是可迭代的对象#xff0c;这意味着您可以遍历所有值。
从技术上讲#xff0c;在 Python 中#xff0c;迭代器是实现迭代器协议的对象#xff0c;它包含方法 iter() 和 next()。
迭代器 V…Python 迭代器
迭代器是一种对象该对象包含值的可计数数字。
迭代器是可迭代的对象这意味着您可以遍历所有值。
从技术上讲在 Python 中迭代器是实现迭代器协议的对象它包含方法 iter() 和 next()。
迭代器 VS 可迭代对象Iterable
列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器您可以从中获取迭代器Iterator。
所有这些对象都有用于获取迭代器的 iter() 方法
实例
从元组返回一个迭代器并打印每个值
mytuple (apple, banana, cherry)
myit iter(mytuple)print(next(myit))
print(next(myit))
print(next(myit))运行实例
apple
banana
cherry甚至连字符串都是可迭代的对象并且可以返回迭代器
实例
字符串也是可迭代的对象包含一系列字符
mystr banana
myit iter(mystr)print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))运行实例
b
a
n
a
n
a遍历迭代器
我们也可以使用 for 循环遍历可迭代对象
实例
迭代元组的值
mytuple (apple, banana, cherry)for x in mytuple:print(x)运行实例
python_iterator_loop_1.py
apple
banana
cherry实例
迭代字符串中的字符
mystr bananafor x in mystr:print(x)运行实例
python_iterator_loop_2.py
b
a
n
a
n
a提示for 循环实际上创建了一个迭代器对象并为每个循环执行 next() 方法。
创建迭代器
要把对象/类创建为迭代器必须为对象实现 iter() 和 next() 方法。
正如您在 Python 类/对象 一章中学到的所有类都有名为 init() 的函数它允许您在创建对象时进行一些初始化。
iter() 方法的作用相似您可以执行操作初始化等但必须始终返回迭代器对象本身。
next() 方法也允许您执行操作并且必须返回序列中的下一个项目。
实例
创建一个返回数字的迭代器从 1 开始每个序列将增加 1返回 1、2、3、4、5 等
class MyNumbers:def __iter__(self):self.a 1return selfdef __next__(self):x self.aself.a 1return xmyclass MyNumbers()
myiter iter(myclass)print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))运行实例
python_iterator_create_1.py
1
2
3
4
5StopIteration
如果你有足够的 next() 语句或者在 for 循环中使用则上面的例子将永远进行下去。
为了防止迭代永远进行我们可以使用 StopIteration 语句。
在 next() 方法中如果迭代完成指定的次数我们可以添加一个终止条件来引发错误
实例
在 20 个迭代之后停止
class MyNumbers:def __iter__(self):self.a 1return selfdef __next__(self):if self.a 20:x self.aself.a 1return xelse:raise StopIterationmyclass MyNumbers()
myiter iter(myclass)for x in myiter:print(x)运行实例
python_iterator_create_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20