Python自学记录——高级特性(切片、迭代、列表生成式、生成器、迭代器)

本文详细介绍了Python编程中的高级特性,包括切片操作、迭代、列表生成式、生成器和迭代器的使用。通过实例展示了如何有效地利用这些特性进行数据处理,如通过切片轻松获取大量数据的部分元素,使用迭代遍历不同类型的数据结构,利用列表生成式快速生成复杂列表,以及掌握生成器和迭代器的创建与应用,以提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 切片
取一个list或者tuple中的几个元素是很常见的。
前面也举过例子。
这种方法面对较多元素时,就不实用了
这种方法面对较多元素时,就不实用了。
所以就有了切片。
在这里插入图片描述
L[0:3]表示从0开始索引,直到索引到3为止,但不包括3。元素个数可以用3-0=3,三个元素。

可以从任意位置开始,倒数切片等。在这里插入图片描述
对于大量数据,切片处理很方便。

下面举例几种:

在这里图片描述
m[x:y:n],n为可以每隔n个取一个。

在这里插入图片描述
字符串也可以看作一种list,同样可以切片操作。

2.迭代
如果给定一个list或者tuple,可以用for循环来遍历这个list或者tuple,这种遍历,就叫迭代。

python中的for不仅可以用在list、tuple上,还可以用在别的可以迭代的对象上,比如字典dict。

在这里插入图片描述

对于value或者key_value在这里插入图片描述

可以用collections中的Iterable判断是否可以迭代。

python内置的enumerate函数可以把一个list变成索引——元素对。

在这里插入图片描述
3.列表生成式
列表生成式既List Comprehensions,是python内置的非常强大的用来创建list的生成式。

在这里插入图片描述

用来生成[11,22,…,10*10]的列表,生成式很轻松一行搞定。在这里插入图片描述
还可以加if语句田间条件筛选判断。在这里插入图片描述

还可以双层循环,生成全排列。

在这里插入图片描述
for循环可以对多个对象进行迭代。
列表生成式也可以。

在这里插入图片描述

if else 在生成式里面的应用,这里注意,if else 连用只能在for之前作为表达式,if在后面是过滤条件。

在这里插入图片描述
4.生成器

一边循环一边计算的机制,称为生成器:generator

创建方法一:
把列表生成器的[ ]改成( )就好了
在这里插入图片描述
生成器需要用next()一个一个打印出来。直到最后一个,没有元素的时候会报错。

在这里插入图片描述

另一种方法就是 yield语句

在这里插入图片描述

可以发现
generator和函数执行流程不一样,函数是顺序执行,遇到ruturn或者最后一行返回,而变成generator的函数,在每次调用yield的地方返回,再次执行时从上次返回yield的地方执行。

5.迭代器

可以直接用于for循环的数据类型有以下几种,一类是集合数据类型,如list、tuple、dict、set、str等

一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象,Iterable。

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

生成器都是Iterable。但list、dict、str虽然是Iterable但不是Iterator。可以用iter()转化。

2020.4.9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值