python2.7学习笔记(6) ——高级特性:切片、迭代、列表生成式、生成器

本文深入探讨了Python中的迭代机制与生成器的概念。解释了如何通过for循环遍历可迭代对象,并介绍了生成器的创建方法及其实现原理。同时,文章详细阐述了列表生成式与生成器的区别,强调了生成器在处理大量数据时的优势。

切片

用于截取list中的元素,比如L是一个list
L[a : b] a

迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
只要是可迭代对象,无论有无下标,都可以迭代
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

生成器

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。generator保存的是算法

创建方法:
一、只要把一个列表生成式的[]改成(),就创建了一个generator
使用generator的next() 方法可以每次计算出下一个值,但是没次使用next方法太过麻烦而且变态,所以经常使用迭代来使用,generator也是一个可迭代对象

二、使用函数来表达一个算法的时候,用print来打印出数字,我们可以将print换成yield,执行流程是,没次碰到yield就返回,当使用next方法时,就从上次退出的yield方法继续执行下去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值