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基础】复杂数据类型-列表类型(列表切片)的更多相关文章

  1. python基础之数据类型/字符串/元组/列表/字典

    Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...

  2. 第五篇:python基础之循环结构以及列表

    python基础之循环结构以及列表   python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...

  3. 第二章:python基础,数据类型

    """第二章:python基础,数据类型2.1 变量及身份运算补充2.2 二进制数2.3 字符编码每8位所占的空间位一个比特,这是计算机中最小的表示单位.每8个比特组成一 ...

  4. Python基础之数据类型

    Python基础之数据类型 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值 ...

  5. Python学习day04 - Python基础(2)数据类型基础

    <!doctype html>day04 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...

  6. python基础一数据类型之字典

    摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...

  7. python基础一数据类型之列表

    摘要: python基础一中写到列表,那么这篇主要讲列表. 1,定义列表 2,列表.元祖.字符串都属于序列,都可以用用索引和切片. 3,列表的方法 1,定义列表 list1 = ['a','b',1, ...

  8. Python基础——原生数据类型(字典,列表,元组,字符串)

    字典Dictionary 字典定义了键值对的1对1管理. 1.定义字典 请看下面的栗子,我们先创建了一个具有两个元素的字典,每对都是key:value的形式. 我们能通过key得到value,但是不能 ...

  9. python 基础-----数字,字符串,列表,字典类型简单介绍

    一.第一个python小程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你输 ...

  10. python基础之循环结构以及列表

    python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...

随机推荐

  1. Zab(Zookeeper Atomic Broadcast)协议

    更多内容,前往IT-BLOG 一.什么是 Zab协议 Zab( Zookeeper Atomic Broadcast:Zookeeper原子广播)Zookeeper 通过 Zab 协议保证分布式事务的 ...

  2. 【数仓运维实践】关于GaussDB(DWS)单SQL磁盘空间管控

    摘要:本文主要讲解数仓运维中遇到单SQL磁盘空间管控问题的解析和方案. 本文分享自华为云社区<GaussDB(DWS)运维 -- 单SQL磁盘空间管控>,作者: 譡里个檔. [问题描述] ...

  3. flutter feature---->quick action

    reference: https://www.filledstacks.com/snippet/managing-quick-actions-in-flutter/ code import 'dart ...

  4. PHP微信三方平台-微信支付(扫码支付)

    1.官方文档地址: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1 2.逻辑分析: 生成支付二维码->用户扫码支付-& ...

  5. Redis高频40问

    Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库.与传统数据库不同的是,Re ...

  6. Python 霸榜的一周,又有什么新 AI 力作呢?「GitHub 热点速览」

    GPT 带火了一波语言模型,LLaMA 和 Alpaca 也在持续发力.依旧是各类 GPT 后缀霸榜 GitHub trending 的一周,为此特推部分专门收录了两个比较不错的 GPT 应用.而作为 ...

  7. Win系统下的免杀思路(总结非教程)

    1.简介 在安全厂商日趋成熟的背景下,编写免杀马的难度和成本日益增长.好用新兴的开源项目在短时间内就被分析并加入特征库.笔者调研了部分开源项目,其中也有项目做了类似的分析 [1],目前能够免杀的项目初 ...

  8. 基于Label studio实现UIE信息抽取智能标注方案,提升标注效率!

    基于Label studio实现UIE信息抽取智能标注方案,提升标注效率! 项目链接见文末 人工标注的缺点主要有以下几点: 产能低:人工标注需要大量的人力物力投入,且标注速度慢,产能低,无法满足大规模 ...

  9. kubernetes 安装 Prometheus + Grafana

    kubernetes 安装 Prometheus + Grafana kubernetes install Prometheus + Grafana 官网 Official website https ...

  10. [Linux]CentOS7 安装指定版本软件包

    以安装openssl-libs为例. 查看当前服务器中YUM源可安装的软件包版本 [root@iz2vc84t88x94kno0u49zwz ~]# yum list | grep openssl-l ...