python中可迭代对象和列表

 什么是可迭代对象?什么是迭代器?

  1. 如果一个对象拥有__iter__方法,其是可迭代对象;做个比喻,一本书可以一页一页翻,是可迭代对象;一块石头,是不可迭代对象。列表,字符串,元组,字典都是可迭代对象。_iter_方法:Python iter() 函数 | 菜鸟教程 (runoob.com)
  2. 如果一个对象拥有__iter__方法和next方法,其是迭代器;做个比喻,一个机枪弹夹有N发子弹,是一个列表,你可以随意取用弹夹里的子弹(元素),因为你可以全部看到 ;一个机枪弹夹+机枪是一个迭代器(弹夹在机枪里,看不到也取不出来),要取用某一颗子弹(元素),只有从第一颗开始,把前面的全部打出来才能取。_iter_方法就相当于把弹夹装机枪里的动作,封装动作;next方法就相当于机枪开枪的动作。参考:Python next() 函数 | 菜鸟教程 (runoob.com)

 迭代器的特性

  1. 迭代器是一个可以记住遍历的位置对象
  2. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。这也是它和列表最大的不同!
  3. 迭代器有两个基本的方法:iter() 和 next()
  4. 字符串列表元组对象都可用于创建迭代器:
>>> 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)

全世界的程序员们联合起来吧!
原文地址:https://www.cnblogs.com/chaojiyingxiong/p/14787072.html