【python基础】复杂数据类型-列表类型(列表切片)
1.列表切片
前面学习的是如何处理列表的所有数据元素。Python还可以处理列表的部分元素,Python称之为切片。
1.1创建切片
创建切片,可指定要使用的第一个数据元素的索引和最后一个数据元素的索引。与range函数一样,Python在到达指定的第二个索引前面的数据元素后停止。比如要切片处理之前名单的列表,将列表中的前三个元素组成新列表,需要指定索引范围为0-2,这将分别输出索引为0、1、2的值。
其语法格式:列表变量名[起始索引值:终止索引值]
编写程序如下所示:
我们可以发现输出的结果还是一个列表,列表的数据元素值是原始列表中的第0个、第1个、第2个索引所对应的数据元素值。我们可以生成列表的任意子集,例如,要提取列表第2-4个元素,那么索引值的范围就是1,2,3,那么我们可将起始索引指定为1,终止索引指定为4,这样就可以输出索引分别为1,2,3所对应的数据元素值,也就是第2-4个数据元素。
1.2无起始索引
如果没有指定起始索引,Python就会从列表开头开始提取,即从索引为0开始提取
其语法格式:列表变量名[:终止索引]
编写程序如下所示
我们发现这两次输出的结果是相同的
1.3无终止索引
如果没有指定终止索引,Python就会从起始索引开始一直提取到列表末尾
其语法格式:列表变量名[起始索引:]
编写程序如下所示
我们可以发现,此时输出的是索引为3到索引最大为9所对应的数据元素值,即从索引3开始一直到列表结束。
1.4负数索引
之前我们接触过负数索引,-1代表列表末尾的最后一个数据元素,依此类推,-n代表列表末尾的第n个数据元素,因此我们可以结合负数索引和无终止索引,输出从负数索引所代表的位置,一直到列表末尾的这段子集,编写程序如下所示:
我们可以发现输出的是索引为-3,-2,-1所对应的数据元素值。
2.遍历切片
如果我们要遍历列表的部分元素,可在for循环中使用切片。遍历前三人员姓名,并输出该名字,编写程序如下所示
在很多情况下,切片很有用。编写Web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息。
3.复制列表
经常需要根据既有列表创建全新列表。要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引。让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
其语法格式:列表变量名[:]
假设要复制姓名名单,编写程序如下所示:
我们发现这两个列表中的数据元素是完全相同的,为核实我们确实经过复制,存在两个列表,分别是names和copy_names,下面在每个列表中都添加一个不同的人员姓名,看看这两个列表是否会发生变化。
编写程序如下所示
我们发现这两个列表,在分别添加一个不同的人员姓名之后,列表内,添加上的数据元素是不一致的。这说明实际存在着两个列表。倘若我们只是简单的将names赋值给copy_names,就不会得到两个列表了。编写程序如下所示
我们可以发现虽然names和assignment_names各自添加了一个人员名单后,但最后的assignment_names添加了两个姓名。这是为什么?
因为简单的将names赋值给assignment_names后,names和assignment_names在内存中都指向的是同一个列表。