什么是可迭代对象?什么是迭代器?
- 如果一个对象拥有__iter__方法,其是可迭代对象;做个比喻,一本书可以一页一页翻,是可迭代对象;一块石头,是不可迭代对象。列表,字符串,元组,字典都是可迭代对象。_iter_方法:Python iter() 函数 | 菜鸟教程 (runoob.com)
- 如果一个对象拥有__iter__方法和next方法,其是迭代器;做个比喻,一个机枪弹夹有N发子弹,是一个列表,你可以随意取用弹夹里的子弹(元素),因为你可以全部看到 ;一个机枪弹夹+机枪是一个迭代器(弹夹在机枪里,看不到也取不出来),要取用某一颗子弹(元素),只有从第一颗开始,把前面的全部打出来才能取。_iter_方法就相当于把弹夹装机枪里的动作,封装动作;next方法就相当于机枪开枪的动作。参考:Python next() 函数 | 菜鸟教程 (runoob.com)
迭代器的特性
- 迭代器是一个可以记住遍历的位置的对象。
- 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。这也是它和列表最大的不同!
- 迭代器有两个基本的方法:iter() 和 next()。
- 字符串,列表或元组对象都可用于创建迭代器:
>>> list=[1,2,3,4] >>> it = iter(list) # 创建迭代器对象 >>> print (next(it)) # 输出迭代器的下一个元素 1 >>> print (next(it)) 2 >>>
迭代器对象可以使用常规for语句进行遍历:
#!/usr/bin/python3 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 for x in it: print (x, end=" ")
也可以使用 next() 函数:
#!/usr/bin/python3 import sys # 引入 sys 模块 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 while True: try: print (next(it)) except StopIteration: sys.exit()
如果从弹夹中取出子弹呢?也就是可迭代对象如何分解出所有元素呢?参考:python从可迭代对象中取值 - 年轻人——001 - 博客园 (cnblogs.com)