list 根据某个数字所在位置_【Python学习笔记】09、使用list和tuple

a5834d8bbc312822b7864f1cd8d07a95.gif

list

Python内置的列表数据类型是:list。list是一种有序的集合,可以随时添加和删除其中的元素。如:

>>> classmates = ['Kuaie', 'Bob', 'Tracy']>>> classmates['Kuaie', 'Bob', 'Tracy']

变量classmates就是一个list。用len()函数可以获得list元素的个数

>>> len(classmates)3

用索引来访问list中每一个位置的元素,索引是从0开始的,当索引超出了范围时,会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(classmates) - 1

>>> classmates[0]'Kuaie'>>> classmates[1]'Bob'>>> classmates[3]Traceback (most recent call last):  File "", line 1, in <module>IndexError: list index out of range

如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:

>>> classmates[-1]'Tracy'

以此类推,可以获取倒数第2个、倒数第3个:

>>> classmates[-2]'Bob'>>> classmates[-3]'Kuaie'>>> classmates[-4]Traceback (most recent call last):  File "", line 1, in <module>IndexError: list index out of range

当然,倒数第4个就越界了。

list是一个可变的有序表,所以,可以往list中追加元素到末尾:

>>> classmates.append('Adam')>>> classmates['Kuaie', 'Bob', 'Tracy', 'Adam']

也可以把元素插入到指定的位置,比如索引号为1的位置:

>>> classmates.insert(1, 'Jack')>>> classmates['Kuaie', 'Jack', 'Bob', 'Tracy', 'Adam']

要删除list末尾的元素,用pop()方法,要删除指定位置的元素,用pop(i)方法,其中i是索引位置:

>>> classmates.pop()'Adam'>>> classmates['Kuaie', 'Jack', 'Bob', 'Tracy']>>> classmates.pop(1)'Jack'>>> classmates['Kuaie', 'Bob', 'Tracy']

要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

>>> classmates[1] = 'Sarah'>>> classmates['Kuaie', 'Sarah', 'Tracy']

list里面的元素的数据类型也可以不同,比如:

>>> L = ['Apple', 123, True]

list元素也可以是另一个list,比如:

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']>>> len(s)4

如果一个list中一个元素也没有,就是一个空的list,它的长度为0:

>>> L = []>>> len(L)0

tuple

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

>>> classmates = ('Kuaie', 'Bob', 'Tracy')

现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0]classmates[-1],但不能赋值成另外的元素。

不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:

>>> t = (1, 2)>>> t(1, 2)

如果要定义一个空的tuple,可以写成()

>>> t = ()>>> t()

但是,要定义一个只有1个元素的tuple,如果你这么定义:

>>> t = (1)>>> t1

定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1

所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>> t = (1,)>>> t(1,)

Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。

最后来看一个“可变的”tuple:

>>> t = ('a', 'b', ['A', 'B'])>>> t[2][0] = 'X'>>> t[2][1] = 'Y'>>> t('a', 'b', ['X', 'Y'])

这个tuple定义的时候有3个元素,分别是'a''b'和一个list。不是说tuple一旦定义后就不可变了吗?怎么后来又变了?

别急,我们先看看定义的时候tuple包含的3个元素:

d3b63371ee1c763c657652ad8206a498.png

当我们把list的元素'A''B'修改为'X''Y'后,tuple变为:

55a7279cb0b000be98ee77001962faab.png

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

小结

list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。

6104fcf6397a0df11898800f060ad5fd.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连接maven_如何在Eclipse中使用Maven工程连接远程的Spark

如何在Eclipse中使用Maven工程连接远程的Spark本地Spark跑不会出现什么问题&#xff0c;但是切换到服务器上各种问题。异常java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda to fieldorg.apache.spark.api.java.JavaRDDLike$$anonf…

计算机系统基础:文件的存取和存储空间管理知识笔记

1、文件的存取 文件的存取实际上就是针对文件存储器上物理块的读写操作。存取方法主要有顺序存储、随机存储两种。 2、文件存储空间管理 磁盘分配表&#xff1a;外存空闲空间管理的数据结构。 2.1 空闲空间管理方法 1、空闲区表 将外存空间的一个连续未分配的区域称为空闲区。操…

语言筛选法选素数怎么解决输出超限_论文深耕 | 什么时候才能把文献看完?——论文的正确筛选、阅读顺序...

Hello!这是你与「大学生科研竞赛」的第 50 次相遇。搞科研免不了要看文献&#xff0c;一提到看文献就有很多人头疼&#xff0c;“那么多文献什么时候才能看完啊&#xff1f;”01筛选论文这个时候就需要我们对文献有一个筛选&#xff0c;筛选的办法也很简单&#xff1a;1标题首先…

ft2232驱动安装方法_ST-Link资料03_ST-Link固件升级、驱动下载安装方法

说明&#xff1a;本文原创作者『strongerHuang』本文首发于微信公众号『嵌入式专栏』&#xff0c;同时也更新在我的个人网站&#xff1a;EmbeddedDevelop一、写在前面前两篇文章讲述的都是关于ST-Link的一些理论知识&#xff0c;建议初学者看看&#xff1a;ST-Link资料01_ST-Li…

操作系统基础:计算机作业管理知识笔记

1、计算机作业的概念计算机中的作业是为了完成某个用户的计算任务所做工作的总和。作业管理程序&#xff1a;操作系统中用来控制作业进入、执行、撤销的一组程序。2、作业与作业的控制方式脱机控制方式&#xff1a;用户需要把自己需要计算机完成的任务用作业控制语言编写成作业…

easyui的验证

多重验证&#xff1a; Js代码 { field : startPort, title : "起始端口", editor: "text", width : 50, editor: { …

403 forbidden_[SpringSecurity] 自定义403页面

使用 Spring Security 时经常会看见 403&#xff08;无权限&#xff09;&#xff0c;默认情况下 显示的效果如下&#xff1a;而在实际项目中可能都是一个异步请求&#xff0c;显示上述效果对于用户 就不是特别友好了。Spring Security 支持自定义权限受限。具体做法1.新建一个类…

硬件基础:嵌入式软件可靠性设计要注意的问题

自从40多年前嵌入式系统诞生以来&#xff0c;随着技术的发展和需求的变化&#xff0c;嵌入式系统软件就在嵌入式系统中越来越重要。现在&#xff0c;甚至一些嵌入式系统硬件一模一样&#xff0c;仅仅是软件不同&#xff0c;就是不一样的产品&#xff08;如交换机和路由器&#…

jdk1.6 改 jdk1.7或jdk1.8(改回也可以)(图文详解)

不多说&#xff0c;直接上干货&#xff01; 第一步&#xff1a;设置默认使用的JDK和JRE环境 具体步骤&#xff1a;菜单window->preferences->java->Installed JRES 点中了&#xff0c;右边的窗口点Add按钮 记住选择添加安装了Java目录下的Jdk目录&#xff0c;而不是Jr…

无法打开“XXXX”,因为Apple无法检查其是否包含恶意软件。怎么解决?

今天在安装navicat的时候&#xff0c;因为apple无法检查其是否包含恶意软件&#xff0c;大概是如下图所示&#xff1a; 仔细查询过后才发现&#xff0c;只需要在Mac上设置下即可&#xff0c;具体方法如下&#xff1a; 打开Mac自带的软件「终端」&#xff08;一般在“其它”这个…

计算机网络基础概念知识笔记

1、计算机网络的发展阶段 1.1、具有通信功能的单机系统 该阶段的模式为终端-计算机网络&#xff0c;属于早期计算机网络的主要形式。它将一台计算机经过通信线路和若干个终端直接相连 1.2 具有通信功能的多机系统 针对单机系统的改进&#xff0c;在主计算机的外围增加了一台计算…

redisTemplate获得key的过期时间方法

/** * 从redis中获取key对应的过期时间; * 如果该值有过期时间&#xff0c;就返回相应的过期时间; * 如果该值没有设置过期时间&#xff0c;就返回-1; * 如果没有该值&#xff0c;就返回-2; */ redisTemplate.opsForValue().getOperations().getExpire("key的名称")

2020年“1024”,程序员日

1024程序员日向可爱的程序员致敬随着时代的发展&#xff0c;大数据技术行业发展愈趋成熟&#xff0c;坚持自己对知识、技术和创新追求的程序员层出不穷。相信很多人都不知道&#xff0c;其实&#xff0c;程序员也有他们自己专属的节日: 程序员日。每个节日都有自己的来历和含义…

小程序内嵌h5页面分享_微信小程序webview内页面分享

因为项目原因&#xff0c;之前在微信小程序内部使用 webview 嵌套了 h5 页面&#xff0c;现在要添加一个新的功能&#xff0c;用户在哪个页面进行了分享&#xff0c;被分享的用户从链接进来就跳转到哪个分享页面。先了解一下 web-view 组件的限制&#xff0c;web-view 是承载网…

shell shift与{}_一文掌握shell脚本中shift的用法及功能

概述今天主要介绍下shell脚本中shift的一些用法&#xff0c;这个命令还是相对比较少见的。一、shift介绍shift命令用于对参数的移动(左移)&#xff0c;通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。简而言之&…

redisTemplate设置key零点过期,生成自增的单号

public String getId() {String key "finance:funs:code";Long incr getIncr(key);if (incr 0) {incr getIncr(key);//从0001开始}DecimalFormat df new DecimalFormat("0000");//四位序列号String format df.format(incr);return format;}public Lo…

计算机网络基础:常见的网络传输介质

传输介质是信号传递的媒体&#xff0c;常用的网络传输介质包括有线介质&#xff08;双绞线、同轴电缆、光纤等&#xff09;和无线介质&#xff08;微波、红外线、激光等&#xff09;。 1、双绞线 双绞线是目前最普遍的传输介质&#xff0c;分为两类&#xff1a;屏蔽双绞线&…

java 多项式拟合最多的项数_Matlab概率统计与曲线拟合

一、二项分布二项分布来源于伯努利试验 (事件发生概率 ) :含义为独立重复N次试验后, 事件总共发生k次的概率分布函数 二项分布记为 binopdf 获得事件共发生次的概率 binocdf 为事件最多发生次的概率 binornd 将生成一个服从二项分布 规模为 的随机矩阵二项分布的数字特征…

mysql -- MAC下安装配置mysql

1:进入官网&#xff0c;链接是 https://dev.mysql.com/downloads/mysql/ 点击第一个dmg文件&#xff0c;download 2:点击 No thanks, just start my download. 3:下载到本地到dmg文件 4:安装MySQL&#xff0c;双击 mysql.dmg 文件&#xff0c;进行安装。 注意&#xff1a;安装…

负载均衡配置与使用

Nginx负载均衡的理解 Nginx是一个轻量级的、高性能的WebServer&#xff0c;他主要可以干下面两件事&#xff1a; 作为http服务器&#xff08;和apache的效果一样&#xff09; 作为反向代理服务器实现负载均衡 现在Nginx到处都可以见到&#xff0c;经常会看到宕机后的网页会显示…