当前位置: 首页 > article >正文

python 迭代器

可迭代对象

可以直接作用于for循环的对象统称为可迭代对象

(iterable)。可以用isinstance()去判断一个对象是否是iterable对象。

数据类型

可以直接作用于for循环的数据类型一般分为两种

1.集合数据类型,如list、tuple、dict、set、string

2.generator,包括生成器和带yield的generator function

引入collections

使用需要引入collections中的Iterable。

示例如下:

from collections import Iterable

注意:从collections中导入,从python3.3已经弃用,到python3.9时将停止使用。

可以用从collections.abc中导入

示例如下:

from collections.abc import Iterable

判断是否可迭代对象

使用示例:

print(isinstance([], Iterable))
print(isinstance((), Iterable))
print(isinstance({}, Iterable))
print(isinstance("", Iterable))
print(isinstance("zhangsan", Iterable))
print(isinstance((x for x in range(10)), Iterable))
print(isinstance(1, Iterable))

# 运算结果
# True
# True
# True
# True
# True
# True
# False

Next函数调用

迭代器:不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,

直到最后抛出StopIteration错误,表示无法继续返回下一个值。

示例如下:

num = (x for x in range(5))
print(next(num))
print(next(num))

# 运算结果
# 0
# 1

Iterator对象

可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator对象)。

引入Iterator

示例如下:

from collections.abc import Iterator

判断Iterator对象

Isinstance()函数还可以用来判断一个对象是否是Iterator对象。

示例如下:

print(isinstance([], Iterator))
print(isinstance((), Iterator))
print(isinstance({}, Iterator))
print(isinstance("", Iterator))
print(isinstance("zhangsan", Iterator))
print(isinstance((x for x in range(10)), Iterator))
print(isinstance(1, Iterator))

# 运算结果
# False
# False
# False
# False
# False
# True
# False

转化Iterator对象

可以通过iter函数转化为Iterator对象。

示例如下:

iter1 = iter([1, 2, 3, 4, 5, 6])
print(next(iter1))
print(next(iter1))

# 运算结果
# 1
# 2

总结

python 迭代器相关知识学习笔记


http://www.kler.cn/a/137324.html

相关文章:

  • 谷歌浏览器的扩展市场使用指南
  • Hexo Next主题集成百度统计
  • 深入解析MySQL Explain关键字:字段意义及调优策略
  • YOLOv8全解析:高效、精准的目标检测新时代——创新架构与性能提升
  • git 删除鉴权缓存及账号信息
  • 【Prometheus 】【实战篇(五)】深入解析 Prometheus 监控指标类型:Counter、Gauge、Histogram 和 Summary
  • SQL sever2008数据库备份、还原以及库检查
  • Linux系统编程 系统编程概念
  • CV计算机视觉每日开源代码Paper with code速览-2023.11.16
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • SAP gui 登录条目不让修改
  • 电子秤方案:做一个宠物勺方案设计
  • GCANet
  • 【MATLAB基础绘图第17棒】绘制玫瑰图
  • Maven工程继承关系,多个模块要使用同一个框架,它们应该是同一个版本,项目中使用的框架版本需要统一管理。
  • springboot上传文件
  • zabbix-proxy分布式监控
  • python实现FINS协议的TCP服务端(篇二)
  • Mysql数据库管理-Innodb 内存优化分析
  • 【ARM AMBA AXI 入门 14 -- AXI 窄位传输 | 非对齐传输| 大小端传输】
  • 平衡二叉树c语言版
  • ubuntu从源码编译gdal
  • Linux下socket例子(c/c++)
  • 【运维日常】lvm中的lv是如何扩容的---直接干
  • 网络渗透测试(TCP/IP)理论篇
  • [autojs]自动关闭青少年模式、个人信息保护指引弹窗