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

【Python】一直没搞懂迭代器是什么。。

迭代器,有两个概念
可迭代对象 iterable
迭代器 iterator

for loop 与 迭代器

  • for loop 即 for 循环。

iterable

  • 可迭代对象:可以一个一个的返回它的成员,List\Dict\Tuple\str它们都是iterable
  • 可以说它是一个 container ,有能力产生一个 iterator 因为其内部实现了__iter__方法
  • 可在 for loop 中被使用
lst = [1, 3,5]
for i in lst:print(i)

iterator

  • 迭代器,是一个表示数据流的对象
  • 内部实现了 __next__方法,你可以使用next函数不断的从这个对象里面获取新的数据
  • 它是有状态的,也就是说它需要知道现在数到哪了
  • for loop 一个 iterable,实际调用了__iter__拿到了iterator,在用iterator.next方法去迭代一个个成员。

让我们写一个链表来理解这一切:
……
不想开会员?
免VIP免积分下载本文全文PDF 点击这里→: 【免费】【Python编程】深入解析迭代器与可迭代对象-CSDN文库

怎么自己写一个 链表 iterator、iterable

class NodeIter:   # 实现了next,是iteratordef __init__(self, node):  self.curr_node = nodedef __next__(self):   # 实现了next,是iteratorif self.curr_node is None:raise StopIterationnode, self.curr_node = self.curr_node, self.curr_node.next  # 解包赋值r
http://www.xdnf.cn/news/273547.html

相关文章:

  • 【Linux】SELinux 的基本操作与防火墙的管理
  • C++负载均衡远程调用学习之上报功能与存储线程池
  • QT对象树
  • C++日志系统实现(二)
  • 三种方式存图分别输出“无向无权图”的“DFS序列”
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.2 缺失值检测与处理(NULL值填充/删除策略)
  • Spring MVC设计与实现
  • Win10下安装Linux-Ubuntu24.04双系统
  • 通讯协议开发实战:从零到一打造企业级通信解决方案
  • 第三方组件库:element-uiiviewVant
  • 《MATLAB实战训练营:从入门到工业级应用》工程实用篇-自动驾驶初体验:车道线检测算法实战(MATLAB2016b版)
  • LeetCode 热题 100 54. 螺旋矩阵
  • MVC 安全
  • 表驱动 FSM 在 STM32 上的高效实现与内存压缩优化——源码、性能与实践
  • 4个纯CSS自定义的简单而优雅的滚动条样式
  • 使用 IDEA + Maven 搭建传统 Spring MVC 项目的详细步骤(非Spring Boot)
  • 深入解析Linux进程间通信(IPC):机制、应用与最佳实践
  • 新一代智能座舱娱乐系统软件架构设计文档
  • 理解MAC-IP映射、ARP协议与ARP欺骗及防护
  • 个人健康中枢的多元化AI网络革新与精准健康路径探析
  • Spring Cloud Gateway MVC 基于 Spring Boot 3.4 以 WAR 包形式部署于外部 Tomcat 实战
  • 软考-软件设计师中级备考 11、计算机网络
  • ASP.NET MVC​ 入门与提高指南九
  • 分布式系统中的 ActiveMQ:异步解耦与流量削峰(二)
  • EasyExcel使用总结
  • Tire 树(字典树/前缀树)
  • 数据同步实战篇
  • 面向对象编程(Object-Oriented Programming, OOP)是什么?
  • Kubernetes(k8s)学习笔记(六)--KubeSphere前置环境安装
  • Git 命令