Python小白学习教程从入门到入坑------第三十一课 迭代器(语法进阶)

目录

一、可迭代对象Iterable

1.1 可迭代对象的条件

1.2 for 循环工作原理

1.3 isinstance()

二、迭代器  Iterator

2.1 __iter__() 和 __next__()

2.2 可迭代对象&迭代器

2.2.1 定义与特性

2.2.2 关系与转换

2.2.3 应用场景

三、迭代器协议(了解即可)

四、自定义迭代器类



在这一节,我将向大家介绍Python中的迭代器和生成器,在介绍之前我们先回顾一下什么是可迭代对象?

一、可迭代对象Iterable

含义: 可以通过for ..in….这类语句遍历读取数据的对象称之为可迭代对象

遍历(迭代):依次从对象中把一个个元素取出来的过程

可迭代对象的数据类型:str、list、tuple、dict、set 等

1.1 可迭代对象的条件

(满足了这两个条件也可以称为可迭代对象):

1、对象实现了__iter__()方法

2、__iter__() 方法返回了迭代器对象

1.2 for 循环工作原理

1、先通过__iter__() 获取可迭代对象的迭代器

2、对获取到的迭代器不断调用__next__() 方法来获取下一个值并将其赋值给临时变量 i

1.3 isinstance()

判断一个对象是否是可迭代对象或者是一个己知的数据类型

导入模块:

from collections.abc import Iterable   # 导入模块

isinstance(o,t)     o:对象,t:类型,可以是直接或者间接类名、基本类型或者元组

eg:

from collections.abc import Iterable   # 导入模块

# 示例对象
my_list = [1, 2, 3]
my_str = "hello"
my_int = 42

# 判断是否是可迭代对象
print(isinstance(my_list, Iterable))  # 输出: True
print(isinstance(my_str, Iterable))  # 输出: True
print(isinstance(my_int, Iterable))  # 输出: False

在这个例子中,my_list 是一个列表,my_str 是一个字符串,它们都是可迭代对象,因此 isinstance() 返回 True。而 my_int 是一个整数,不是可迭代对象,所以 isinstance() 返回 False。

此外,还可以使用 isinstance() 来判断一个对象是否是某个具体的数据类型,比如列表、元组、字典等:

# 判断是否是列表
print(isinstance(my_list, list))  # 输出: True

# 判断是否是元组
my_tuple = (1, 2, 3)
print(isinstance(my_tuple, tuple))  # 输出: True

# 判断是否是字典
my_dict = {'a': 1, 'b': 2}
print(isinstance(my_dict, dict))  # 输出: True

二、迭代器  Iterator

含义:迭代器是一个可以记住遍历位置的对象,迭代器对象从集合的第一个元素开始访
问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

2.1 __iter__() 和 __next__()

迭代器有两个基本的方法:__iter__() 和 __next__()

__iter__() 方法:返回迭代器对象本身

__next__() 方法:返回容器的下一个元素,并将其移动到下一个位置,如果容器中没有更多的元素,则返回一个StopIteration异常

步骤:

1、iter() 调用对象的__iter__(),并把__iter__() 方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糊涂君-Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值