【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号水池,此时因为水池不是同一个,所以进行不同操作后观察到的水池状况是不一样的。放到程序中,操作的就是两个不同的列表
【python基础】复杂数据类型-列表类型(列表切片)的更多相关文章
- python基础之数据类型/字符串/元组/列表/字典
Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...
- 第五篇:python基础之循环结构以及列表
python基础之循环结构以及列表 python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...
- 第二章:python基础,数据类型
"""第二章:python基础,数据类型2.1 变量及身份运算补充2.2 二进制数2.3 字符编码每8位所占的空间位一个比特,这是计算机中最小的表示单位.每8个比特组成一 ...
- Python基础之数据类型
Python基础之数据类型 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值 ...
- Python学习day04 - Python基础(2)数据类型基础
<!doctype html>day04 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...
- python基础一数据类型之字典
摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...
- python基础一数据类型之列表
摘要: python基础一中写到列表,那么这篇主要讲列表. 1,定义列表 2,列表.元祖.字符串都属于序列,都可以用用索引和切片. 3,列表的方法 1,定义列表 list1 = ['a','b',1, ...
- Python基础——原生数据类型(字典,列表,元组,字符串)
字典Dictionary 字典定义了键值对的1对1管理. 1.定义字典 请看下面的栗子,我们先创建了一个具有两个元素的字典,每对都是key:value的形式. 我们能通过key得到value,但是不能 ...
- python 基础-----数字,字符串,列表,字典类型简单介绍
一.第一个python小程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你输 ...
- python基础之循环结构以及列表
python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...
随机推荐
- Rainbond PipeLine插件部署与springboot应用部署实践
前言:上一篇介绍额rainbond单机部署+单个节点的k8s环境搭建,本篇介绍rainbond5.12新增的pipeline插件的使用 1.Pipeline插件的安装 安装gitlab与gitlab- ...
- Kafka 消息送达语义
更多内容,前往IT-BLOG 消息送达语义是消息系统中一个常见的问题,主要包含三种语义:[1]At most once:消息发送或消费至多一次:[2]At least once:消息发送或消费至少一次 ...
- HTTP协议分析与Unity用法
一.http协议简介 http协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议,使用TCP/IP通信协议传输 ...
- C++ 测试框架 GoogleTest 初学者入门篇 甲
*以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/BS_u9A4EY50y4vDDuxkCAQ 开发者虽然主要负责工程 ...
- Kubeadm安装k8s集群升级100年证书时报错:Unable to connect to the server: EOF:求解决方法.
报错信息: 使用命令时: Kubelet服务报错: 报错情况,在更新完k8s100年证书的时候,到最后重新启动kubelet服务的时候,服务是可以重新启动的,但是kubectl的命令是无法使用的,会等 ...
- win10计划任务程序库实现定时任务的自动执行程序及问题解决。
win10计划任务程序库可以实现按照规则频率执行脚本的功能.现在将设置方法记录如下: 创建任务步骤 1.右键点击我的电脑,选择管理,依次点击:系统工具->任务计划程序->任务计划程序库. ...
- window安装openslide库
下载openslide二进制文件: 链接:https://openslide.org/download/ 将下载好的ZIP文件解压到Anaconda的Library目录下(你也可以选择自己喜欢的目录 ...
- panda之series结构
eries 结构,也称 Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系.Seri ...
- [arthas] UnsupportedOperationException: class redefinition failed: attempted to change the schema (add/remove fields)
问题描述 [arthas@1]$ trace cn.xx.dataservice.biz.dataservice.controller.v1.CommonSearchController datase ...
- [Maven]Maven聚合工程
一直对此问题好奇,正好有这兴致和时间,有必要了解一下. 所谓聚合项目,实际上就是对项目分模块. 互联网项目一般来说按照业务分(订单模块.VIP模块.支付模块.CMS模块-): 传统的软件项目,大多采用 ...