python三大器_Python 入门之 Python三大器 之 迭代器

news/2024/12/22 15:17:04/

1、迭代器

(1)可迭代对象

<1> 只要具有__ iter__()方法就是一个可迭代对象

(我们可以通过dir()方法去判断一个对象具有什么方法,dir()会返回一个列表,这个列表中含有该对象的以字符串的形式的所有方法名)

lst.__iter__()

dict.__iter__()

<2> 可迭代对象的优点:

可以直观的查看里面的数据。

<3> 可迭代对象的缺点:

占用内存

可迭代对象不能迭代取值(除去索引,key以外)

(2)迭代器:工具

<1> 具有__ iter__() 和 __ next__() 两个方法的就是迭代器

( iter() 和 __ iter__() 是一样的 推荐使用iter() )

lst = [1,2,3,4,5]

l = lst.__iter__() # 将可迭代对象转换成迭代器

l.__iter__() # 迭代器指定__iter__()还是原来的迭代器

print(l.__next__()) # 1

print(l.__next__()) # 2

<2> 迭代器基于上一次停留的位置,进行取值

<3> 迭代器的优点:

惰性机制: 节省空间

<4>迭代器的缺点:

不能直接查看值,迭代器查看到的是一个迭代器的内存地址

一次性,用完就没有了

不能逆行(后退)

<5> 应用:

​当数据量过大,大到足以撑爆你的内存或者以节省内存为首选因素时,将数据集设置为迭代器是一个不错的选择。(可参考为什么python把文件句柄设置成迭代器)。

(3)空间换时间:容器存储大量的元素,取值时间短,但是容器占用空间大

(4)时间换空间:迭代器就是节省了空间,但是取值时间较长

(5)for 循环的本质

l1 = [1, 2, 3, 4, 5, 6]

obj = iter(l1) # 1.将可迭代对象转化成迭代器

while True: # 2.利用while循环,next进行取值

try:

print(next(obj))

except StopIteration: # 3.利用异常处理终止循环

break

(6)Python2和Python3中的区别:

pyhton3:

iter()和 __iter__() 都有

next()和__next__()都有

python2:

iter()

next()


http://www.ppmy.cn/news/450684.html

相关文章

java3大器_阿里祭出大器,Java代码检查插件

【套装3本】代码整洁之道三部曲教材 176.8元 包邮 (需用券) 去购买 > 背景 前阵子阿里巴巴发布了<>。 不久&#xff0c;又一气呵成发布了Eclipse/Intellij Idea下的代码检测插件PC3&#xff0c;可谓是国内代码优秀的检测插件。此插件检测的标准是根据<>上面制定…

windows pe文件导入表隐藏

前言 分析过一些文件&#xff0c;发现里面都会对引用的api进行动态获取&#xff0c;然后通过内存指针调用。细细想来&#xff0c;这种方法还是有一定的对抗作用的&#xff0c;如果别人想要分析的必须的稍微深入或者动态调试一下。然后&#xff0c;我就想着该如何实现这种用法呢…

python三大器,Python 入门之 Python三大器 之 生成器

Python 入门之 Python三大器 之 生成器 1、生成器 (1)什么是生成器&#xff1f; 核心&#xff1a;生成器的本质就是一个迭代器 迭代器是Python自带的 生成器程序员自己写的一种迭代器 def func(): print("这是一个函数") return "函数" func() def func():…

java三大器

拦截器&#xff1a;利用反射的机制实现&#xff0c;针对action、日志、未登录用户。 4.1&#xff0c;拦截器是基于java反射机制来实现的&#xff0c;而过滤器是基于函数回调来实现的。&#xff08;有人说&#xff0c;拦截器是基于动态代理来实现的&#xff09; 4.2&#xff0…

java 三大器

过滤器&#xff08;Filter&#xff09; 所谓过滤器顾名思义是用来过滤的&#xff0c;Java的过滤器能够为我们提供系统级别的过滤&#xff0c;也就是说&#xff0c;能过滤所有的web请求&#xff0c;这一点&#xff0c;是拦截器无法做到的。在Java Web中&#xff0c;你传入的requ…

python三大器_Python - 三大器 迭代器,生层器,装饰器

Python - 三大器 迭代器,生层器,装饰器 在介绍三大器之前先来了解一下容器和可迭代对象... 一. 容器 容器是一种把多个元素组织在一起的数据结构&#xff0c;容器中的元素可以逐个地迭代获取&#xff0c;可以用in, not in关键字判断元素是否包含在容器中。通常这类数据结构把所…

Spring三大器

Spring三大器 监听器listener Servlet的监听器Listener&#xff0c;它主要作用是随着web应用的启动而启动&#xff0c;只初始化一次&#xff0c;随着web的停止而销毁。 主要工作是&#xff1a;进行一些初始化的工作&#xff0c;例如参数或者固定一些固定对象 Spring boot框架自…

四大器

四大器 目录 一、迭代器 1.迭代协议2.一个简单的迭代器&#xff1a;3.迭代异常处理&#xff08;迭代完了&#xff0c;没有了,try&#xff09;二、生成器 yield与return的区别&#xff1a;三、装饰器 1.无参模板&#xff08;二层&#xff09;2.有参模板&#xff08;三层&#xf…