1

python-迭代器

python迭代器

  • 判断对象是否可以迭代
    from collections import Iterable
    print('检测对象是否可迭代:')
    print(isinstance([1, 2, 3], Iterable))
检测对象是否可迭代:
True

如果对象可以迭代,返回True

  • 生成迭代器
    迭代器函数 - iter() 函数 与 next() 函数
    iter(iterable_object)从可迭代对象中返回一个迭代器,iterable必须是能提供一个迭代器的对象;iter()函数介绍:生成一个迭代器对象;iter()函数用法:iter(iterable)
    参数介绍:iterable —> 可迭代的数据类型(比如列表、字典、元组以及集合类型等)
    next(iterator) 从迭代器iterator中获取下一了记录,如果无法获取下一条记录,则触发stoptrerator异常;

说明
1.迭代器只能往前取值,不会后退
2.用iter函数可以返回一个可迭代对象的迭代器

  • 例子

    • 例1:iter([1, 2, 3])
      输出
      <list_iterator at 0x256686eb880>
    • 例2:test_list = [1, 3, 5, 7]
      test_iter = iter(test_list)
      print(next(test_iter))
      输出1
      print(next(test_iter))
      输出3
      print(next(test_iter))
      输出5
      print(next(test_iter))
      输出7
      print(next(test_iter))
      报错StopIteration
    • 例3:for 循环一行生成迭代器对象
      result = (i for i in [1, 2, 3])
      print('for 循环,第一次 \'i\'的值为:', next(result))
      print('for 循环,第二次 \'i\'的值为:', next(result))
      print('for 循环,第三次 \'i\'的值为:', next(result))
      输出:
      for 循环,第一次 'i'的值为: 1
      for 循环,第一次 'i'的值为: 2
      for 循环,第一次 'i'的值为: 3
  • 其他
    为了防止取值超过迭代器最大值,使用for循环来实现迭代取值

def make_iter():
    for i in range(5):
        yield i  # yield函数将每个for循环成员放到一个迭代器对象中,只有被调用才会使用
 
iter_obj = make_iter()
 
for i in iter_obj:
    print(i)
print('----')
for i in iter_obj:
    print(i)

结果:

0
1
2
3
4
----
0
1
2
3
4
----
posted @ 2023-03-03 18:19  Bonne_chance  阅读(15)  评论(0编辑  收藏  举报
1