【python基础】复杂数据类型-列表类型(列表切片),python还可以处


1.列表切片

前面学习的是如何处理列表的所有数据元素。python还可以处理列表的部分元素,python称之为切片。

1.1创建切片

创建切片,可指定要使用的第一个数据元素的索引和最后一个数据元素的索引。与range函数一样,python在到达指定的第二个索引前面的数据元素后停止。比如要输出列表中的前三个元素,需要指定索引范围为0-3,这将分别输出索引为0、1、2的值。比如,要切片处理之前学员名单的列表。
其语法格式:列表变量名[起始索引值,终止索引值]
编写程序如下所示

我们可以发现输出的结果还是一个列表,列表的数据元素值是原始列表中的第0个、第1个、第2个索引所对应的数据元素值。我们可以生成列表的任意子集,例如,要提取列表第2-4个元素,可将起始索引指定为1,终止索引指定为4,这样就可以输出索引分别为1,2,3所对应的数据元素值,也就是第2-4个元素。

1.2无起始索引

如果没有指定起始索引,python就会从列表开头开始提取,即从索引为0开始提取,编写程序如下所示

我们发现这两次输出的结果是相同的

1.3无终止索引

如果没有指定终止索引,python就会从起始索引开始一直提取到列表末尾,编写程序如下所示

我们可以发现,此时输出的是索引为3到索引最大为9所对应的数据元素值,即从索引3开始一直到列表结束。

1.4负数索引

之前我们接触过负数索引,-1代表列表末尾的最后一个数据元素,依此类推,-n代表列表末尾的第n个数据元素,因此我们可以结合负数索引,输出从负数索引所代表的位置,一直到列表末尾的这段子集,编写程序如下所示:

我们可以发现输出的是索引为-2,-1所对应的数据元素值。

2.遍历切片

如果我们要遍历列表的部分元素,可在for循环中使用切片。遍历前三个学员名单,并输出他们的名字,编写程序如下所示

在很多情况下,切片很有用。编写Web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息。

3.复制列表

经常需要根据既有列表创建全新列表。要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引。让python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
其语法格式:列表变量名[:]
我们想复制下刚才的学员名单,编写程序如下所示:

我们发现这两个列表中的数据元素是完全相同的,为核实我们确实经过复制,存在两个列表,分别是names和copy_names。下面在每个列表中都添加一个不同的学员姓名,看看这两个列表是否会发生变化。
编写程序如下所示

我们发现这两个列表,再分别添加一个不同的学员姓名之后,列表内,添加上的数据元素是不一致了。这说明实际存在着两个列表。倘若我们只是简单的将names赋值给copy_names,就不会得到两个列表了。编写程序如下所示

我们可以发现虽然names和copy_names各自添加了一个学员名单后,但最后添加了两个学员。这是为什么?
因为简单的将names赋值给copy_names后,names和copy_names在内存中都指向的是同一个列表,这就相当于一个1升水的水池有两个口,刚开始的时候都是关闭的,然后打开1号口,往里面添加1升水,我们通过2号口来观察发现水池里有2升水,假设感觉水位有点高,我们通过2号口,抽出0.5升水之后,现在水池里还剩1.5升水,这个过程中不管我们通过1号口还是2号口来加水、抽水、观察水池水位,其实操作的都是同一个水池。放到程序中,操作的就是同一个列表
而通过列表切片进行复制的列表,此时就相当于有两个水池各有一个口,我们通过1号口观察操作1号水池,2号口观察操作2号水池,此时因为水池不是同一个,所以进行不同操作后观察到的水池状况是不一样的。放到程序中,操作的就是两个不同的列表

评论关闭