再说列表:列表推导式,列表生成器,列表迭代器

再说列表

I tell you :office下载

Kms  破解

列表和列表的内存处理

列表是python组合数据类型中使用较多的类型之一,以其对批量数据提供了有好的访问支持而被广大开发者钟爱

问题:

  1. 我们需要一个存放了大量的有规律的数据的列表,这个列表怎么定义声明
  2. 列表中存储的数据量过大,会不会对内存产生影响
  • 少量数据是手工定义

  • 大量数据编码实:列表推导式

  1. 以上连个只是简单的顺序排列 ,当类表中的数据是有一定的规律该如何创建

推导式生成数据

优点:语法简单,可以通过包含逻辑条件生成符合条件的类表

缺点:逻辑过于简单,不能生成条件更加复杂的更加准确的列表

列表推导式的出现,极大程度的简化了存放有规律数据的列表的操作。

在实际开发过程中,列表推导式的应用也是相当的广泛的,甚至可以基本替代一些简单程序

结构实现一行代码独立功能流程了

显示内存使用量的模块

From memory_profiler import profile

@profile(precision=5)括号内表示保留小数点后五位

列表生成器

 生成器语法构造和推导式语法构造及其类似

列表推导式: my_list = [x for x in range(0,100])

                                     Print(my_list)

列表生成器:my_generator = (x for x in range(0,10))

print(my_generator)

直接展示,展示的是内存的地址信息

生成器对象必须通过系统的内建标准函数next()来获取生成器的下一个数据

一:通过系统内建函数next(),获取下一个值

print(next(my_generator)) #0

print(next(my_generator)) #1

二:通过类型的__next__()魔法方法,直接获取下一个数据

Print(my_generator.__next__()) #2

Print(my_generator.__next__()) #3

列表的生成器是用来产生列表内的数据的,迭代器是用来判断一个对象是否可以被for循环遍历所以列表生成器和迭代器是没有关系的!列表生成器只能用在列表中,迭代器可以判断很多类型的数据

循环遍历与迭代器

列表迭代器:

Python在collections集合模块中提供了迭代器对象

列表的迭代包含两个部分:

  • 迭代对象:collections.Iterable

可以被for循环遍历 被next操的的对象

  • 迭代标识:collections.Iterator

记录迭代状态,主要记录迭代到哪了

迭代标识可以通过迭代对象的__iter__()函数获得

 

判断一个对象是否被for循环遍历要先判断它是否是迭代对象,用 isinstance判断一个对象是不是某种类

X = “hello”

Isinstance(x, collections.Iterable)

如果返回值为True则说明该对象可以被循环遍历,反之则不能

字符是迭代对象可以用for循环遍历,int整型不是迭代对象,不能用for循环遍历

 

自定义对象,通过for循环遍历

将iter(self.fav)列表转换为一个迭代对象

思考题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值