python进阶:深入理解迭代器和生成器

iterator & generator

  • 一、容器、可迭代对象和迭代器
  • 二、生成器
    • (一)、何为生成器?
    • (二)、生成器的实现方式
    • (三)、扩展

一、容器、可迭代对象和迭代器

1、容器

  • python中一切皆对象,对象的抽象就是类,而对象的集合就是容器。列表(list:[0,1,2]),元组(tuple:(0,1,2)),字典(
    dict:{0:0,1:1,2:2}),集合(set:set([0,1,2]))都是容器
  • 容器可以简单理解为多个元素在一起的单元,不同容器的区别就是内部数据结构的实现方法

2、可迭代对象

  • 所有的容器都是可迭代的,也就是可迭代对象,可迭代可以想象成买苹果,卖家并不会告诉你有多少库存,每次你告诉卖家你要一个苹果,然后卖家采取行为;要么给你一个苹果,要么告诉你,苹果已经卖完了,你并不需要知道,卖家仓库是怎么摆放苹果的

3、迭代器

  • 迭代器(iterator)提供了一个next的方法。调用这个方法后,要么得到容器的下一个对象,要么得到一个Stopiteration的错误(苹果卖完了)
  • 可迭代对象并不等于迭代器,可迭代对象通过iter()函数返回一个迭代器,再通过next()函数就可以实现遍历。我们常用的for循环将这个过程隐式化了
l1 = [1,2,3,4]
print(next(l1))

上述代码会报错:TypeError:‘list’ object is not an iterator,因为l1只是一个可迭代对象,并没有返回迭代器

l1 = [1,2,3,4]
l2 = iter(l1)
print(l2)
print(

你可能感兴趣的:(Python,python,开发语言,迭代器,生成器)