← 返回首页
Python3基础教程(二十)
发表时间:2022-03-29 21:31:27
迭代器

1.迭代器

迭代器是一种模式、使得序列类型的数据结构的遍历行为与被遍历的对象分离,即咱们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就能够遍历这个对象的内部元素。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

Python中,迭代是通过for ... in来完成的,而很多语言比如C语言,迭代list是通过下标完成的。

实例:

# -*- coding: utf-8 -*-
# @Time : 2022/3/29 21:18
# @File : iterator.py
# @Software : PyCharm

fruits = ['grape', 'watermelon', 'apple', 'banana', 'orange']
for f in fruits:
    print(f)

运行结果:

grape
watermelon
apple
banana
orange

可以看出,Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。

实例:

person={"name":"zhangsan","age":18,"address":"beijing"}

for key in person:
    print(key)
    print(key,"=",person[key])

运行结果:

name
name = zhangsan
age
age = 18
address
address = beijing

如何判断一个对象是可迭代对象呢?方法是通过collections.abc模块的Iterable类型判断。 例如:

# -*- coding: utf-8 -*-
# @Time : 2022/3/29 21:18
# @File : iterator.py
# @Software : PyCharm

from collections.abc import Iterable
fruits = ['grape', 'watermelon', 'apple', 'banana', 'orange']
person={"name":"zhangsan","age":18,"address":"beijing"}

print(isinstance('abc', Iterable))
print(isinstance(fruits, Iterable))
print(isinstance(person, Iterable))
print(isinstance(10000, Iterable))

运行结果:

True
True
True
False