一文搞懂Python迭代器和生成器

2020-06-19 00:00:00 函数 列表 迭代 表达式 生成器

很多童鞋搞不懂python迭代器和生成器到底是什么?它们之间又有什么样的关系?

这篇文章就是要用简单的方式让你理解Python迭代器和生成器!

1、迭代器和迭代过程

维基百科解释道:

在Python中,迭代器是遵循迭代协议的对象。使用iter()从任何序列对象中得到迭代器(如list, tuple, dictionary, set等)。另一种形式的输入迭代器是generator(生成器)。

很多容器诸如列表、字符串可以用for循环遍历对象。for 语句会调用容器对象中的 iter()函数, 该函数返回一个定义了 __next__() 方法的迭代器对象,该方法将逐一访问容器中的元素。

所以说:python中,任意对象,只要定义了__next__方法,它就是一个迭代器。因此,python中的容器如列表、元组、字典、集合、字符串都可以被称作迭代器。

讲完迭代器后,迭代就比较好理解了,迭代就是从迭代器中取元素的过程

比如我们用for循环从列表[1,2,3]中取元素,这种遍历过程就被称作迭代

# 列表是迭代器
for element in [1, 2, 3]:
    print(element)
# 元组是迭代器
for element in (1, 2, 3):
    print(element)
# 字典是迭代器
for key in {'one':1, 'two':2}:
    print(key)
# 字符串是迭代器
for char in "123":
    print(char)
# 打开的text同样是迭代器
for line in open("myfile.txt"):
    print(line, end='')

相关文章