- 💂 个人网站:【海拥】【摸鱼小游戏】【学习文档】
- 🤟 风趣幽默的前端学习课程
- 💅 想寻找共同学习交流、摸鱼划水的小伙伴
- 💬 免费且实用的 Python 刷题(面经大全)网站
可迭代是一个对象,可以迭代。它在传递给iter()方法时生成一个迭代器。迭代器是一个对象,用于使用__next__()方法循环访问可迭代对象。迭代器具有__next__()方法,该方法返回对象的下一项。
注意: 每个迭代器也是可迭代的,但并非每个可迭代器都是 Python 中的迭代器。
例如,列表是可迭代的,但列表不是迭代器。可以使用函数 iter() 从可迭代对象创建迭代器。为了实现这一点,对象的类需要一个方法__iter__,它返回一个迭代器,或者一个__getitem__方法,其顺序索引以 0 开头。
示例 1:
我们知道 str 是可迭代的,但它不是迭代器。如果我们在for循环中运行它来打印字符串,那么这是可能的,因为当for循环执行时,它会转换为迭代器来执行代码。
BB
代码
next("GFG")
call last):
File "/home/1c9622166e9c268c0d67cd9ba2177142.py", line 2, in <module>
next("GFG")
TypeError: 'str' object is not an iterator
这里iter( )正在将字符串(可迭代)的s转换为迭代器,并首次打印G,我们可以多次调用以迭代字符串。
当执行 for 循环时,for 语句在对象上调用 iter(),它应该循环访问该对象。
如果此调用成功,则迭代器调用将返回一个迭代器对象,该对象定义方法 next(),该方法一次访问一个对象的元素。
# 代码
s="GFG"
s=iter(s)
print(s)
print(next(s))
print(next(s))
print(next(s))
输出:
<str_iterator object at 0x7f822a9c3210>
G
F
G
如果没有其他可用的元素,next() 方法将引发停止站点异常。
for 循环将在捕获停止站点异常后立即终止。
让我们使用 next() 内置函数调用__next__() 方法。
示例 2:
如果对象“obj”是可迭代的,则函数“可迭代”将返回 True,否则返回 False。
# 城市列表
cities = ["Berlin", "Vienna", "Zurich"]
# 初始化对象
iterator_obj = iter(cities)
print(next(iterator_obj))
print(next(iterator_obj))
print(next(iterator_obj))
输出:
Berlin
Vienna
Zurich
注意: 如果再次调用“next(iterator_obj)”,它将返回“停止站点”。
示例 3:
检查对象是否可迭代。
# 检查对象是否可迭代的函数
def it(ob):
try:
iter(ob)
return True
except TypeError:
return False
# 驱动程序代码
for i in [34, [4, 5], (4, 5),
{"a":4}, "dfsdf", 4.5]:
print(i,"is iterable :",it(i))
输出:
34 is iterable : False
[4, 5] is iterable : True
(4, 5) is iterable : True
{'a': 4} is iterable : True
dfsdf is iterable : True
4.5 is iterable : False