首页 > 编程语言 >【python基础】复杂数据类型-列表类型(列表切片)

【python基础】复杂数据类型-列表类型(列表切片)

时间:2023-06-04 09:33:04浏览次数:46  
标签:python 元素 数据类型 列表 切片 索引 names

1.列表切片

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

1.1创建切片

创建切片,可指定要使用的第一个数据元素的索引和最后一个数据元素的索引。与range函数一样,python在到达指定的第二个索引前面的数据元素后停止。比如要输出列表中的前三个元素,需要指定索引范围为0-3,这将分别输出索引为0、1、2的值。比如,要切片处理之前学员名单的列表。
其语法格式:列表变量名[起始索引值,终止索引值]
编写程序如下所示
image
我们可以发现输出的结果还是一个列表,列表的数据元素值是原始列表中的第0个、第1个、第2个索引所对应的数据元素值。我们可以生成列表的任意子集,例如,要提取列表第2-4个元素,可将起始索引指定为1,终止索引指定为4,这样就可以输出索引分别为1,2,3所对应的数据元素值,也就是第2-4个元素。

1.2无起始索引

如果没有指定起始索引,python就会从列表开头开始提取,即从索引为0开始提取,编写程序如下所示
image
我们发现这两次输出的结果是相同的

1.3无终止索引

如果没有指定终止索引,python就会从起始索引开始一直提取到列表末尾,编写程序如下所示
image
我们可以发现,此时输出的是索引为3到索引最大为9所对应的数据元素值,即从索引3开始一直到列表结束。

1.4负数索引

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

2.遍历切片

如果我们要遍历列表的部分元素,可在for循环中使用切片。遍历前三个学员名单,并输出他们的名字,编写程序如下所示
image
在很多情况下,切片很有用。编写Web应用程序时,可使用切片来分页显示信息,并在每页显示数量合适的信息。

3.复制列表

经常需要根据既有列表创建全新列表。要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引。让python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
其语法格式:列表变量名[:]
我们想复制下刚才的学员名单,编写程序如下所示:
image
我们发现这两个列表中的数据元素是完全相同的,为核实我们确实经过复制,存在两个列表,分别是names和copy_names。下面在每个列表中都添加一个不同的学员姓名,看看这两个列表是否会发生变化。
编写程序如下所示
image
我们发现这两个列表,再分别添加一个不同的学员姓名之后,列表内,添加上的数据元素是不一致了。这说明实际存在着两个列表。倘若我们只是简单的将names赋值给copy_names,就不会得到两个列表了。编写程序如下所示
image
我们可以发现虽然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,元素,数据类型,列表,切片,索引,names
From: https://www.cnblogs.com/lbprogram/p/17454592.html

相关文章

  • Python可视化模块
    Python可视化模块一个简单的python包就能够实现数据的可视化功能,这个第三方动态可视化的数据模块就是Pynimate效果是这样的安装pipinstallpynimate使用指南想要使用Pynimate,直接import一下就行importpynimateasnim输入数据后,Pynimate将使用函数Barplot()......
  • 【python】函数print
    f-string python中的字符串通常被括在双引号("")或单引号('')内。要创建f-string,你只需要在字符串的开头引号前添加一个 f 或 F。例如,"This" 是一个字符串,而 f"This" 是一个f-string。当使用f-string来显示变量时,你只需要在一组大括号 {} 内指定变量的名字。而在运行时......
  • Reinforcement Learning之Q-Learning - Python实现
    算法特征①.以真实reward训练Q-function;②.从最大Q方向更新policy\(\pi\)算法推导PartⅠ:RL之原理整体交互流程如下,定义策略函数(policy)\(\pi\),输入为状态(state)\(s\),输出为动作(action)\(a\),则,\[\begin{equation*}a=\pi(s)\end{equation*}\]令......
  • 【Python】如何在FastAPI中使用UUID标记日志,以跟踪一个请求的完整生命周期
    为什么要使用uuid标记日志?在分布式系统中,一个请求可能会经过多个服务,每个服务都会生成自己的日志。如果我们只使用普通的日志记录,那么很难将这些日志串联在一起,以至难以跟踪一个请求的完整生命周期。如果能够使用uuid标记日志,为每个请求生成一个唯一的uuid,且这个日志可以在不同......
  • python版本的“共轭梯度法”算法代码
    在看代码的过程中遇到了共轭梯度法这个概念,对这个算法的数学解释看过几遍,推导看过了,感觉懂了,然后过上一些日子就又忘记了,然后又看了一遍推导,然后过了一些日子也就又忘记了,最后想想这个算法的数学解释就不要再取深究了,毕竟平时也不太会用到,偶尔用到了只要保证代码会写也就OK了。  ......
  • VSCode 如何将已编辑好的python文件中的 tab 键缩进转换成4个空格键缩进
    事情起源:使用vscode维护一个7年前的python项目,发现编辑后运行报错,提示缩进错误,原因是当时的项目使用tab做缩进,而我正在用的vscode是使用4空格做缩进,因此造成了缩进不匹配的问题。  如何解决?把自己的vscode缩进从4空格改为tab貌似是最可行的,但是考虑其他项目的匹配问题又总不能老......
  • 【python基础】复杂数据类型-列表类型(排序/长度/遍历)
    1.列表数据元素排序在创建的列表中,数据元素的排列顺序常常是无法预测的。这虽然在大多数情况下都是不可避免的,但经常需要以特定的顺序呈现信息。有时候希望保留列表数据元素最初的排列顺序,而有时候又需要调整排列顺序。python提供了很多列表数据元素排序的方式,可根据情况选用。1......
  • [转] 十分钟掌握Seaborn,进阶Python数据可视化分析
      -为什么用Seaborn-Seaborn是基于Python且非常受欢迎的图形可视化库,在Matplotlib的基础上,进行了更高级的封装,使得作图更加方便快捷。即便是没有什么基础的人,也能通过极简的代码,做出具有分析价值而又十分美观的图形。Seaborn可以实现Python环境下的绝大部分探索......
  • 02 python爬虫-bs4
    目录步骤代码结果new.csv图片步骤爬取主页面中的文章详情的url和图片地址下载图片并请求加文章详情中的页面内容爬取文章详情中的标题、作者、发布时间代码importrequestsimportcsvfrombs4importBeautifulSoup#请求的一级页面的地址q_url='http://xinfadi.com.cn/new......
  • python 操作 xlsx
    目录读取/写入:openpyxldemo1读取/写入:openpyxldemo1importopenpyxlimportos#创建exceldefwrite_excel_xlsx(path,sheet_name,value):ifnotos.path.exists(path):write_new_excel_xlsx(path,sheet_name,value)else:append_write_excel_x......