【python基础】复杂数据类型-列表类型(增删改查)
视频讲解
列表数据类型-增删改查
1.列表-基础
列表是由一系列数据元素按特定顺序排列组成的。可以将任何类型数据元素加入列表中,其中的数据元素之间没有任何关系。鉴于列表通常包含多个数据元素,给列表变量指定一个表示复数的名称是个不错的选择。
在Python中,用方括号[]来表示列表,并用逗号来分隔其中的数据元素。
语法格式如下所示:
列表变量 = [ 数据元素1,数据元素2,,,,,,数据元素n ]
创建一个名字列表,并将其输出,编写程序如下所示
我们可以发现,用print函数来输出列表类型的变量names,会将names列表的所有数据元素都输出出来,所有数据元素用方括号包括起来,并且每个数据元素之间用逗号分隔开。
2.查询列表单个元素
列表是有序集合,因此要访问列表的单个数据元素,只需将该数据元素的索引告诉Python即可。访问列表数据元素的语法格式,可指出列表的名称,再指出数据元素的索引,索引为整数值,并将其放在方括号内,如下所示:
我们如果要输出第一个人的名字,也就是张三,我们先不探讨Python的具体语法规定,我们可编写如下程序,做个测试。
我们发现运行结果和我们想的不一致,问题出在哪里呢?
问题出在索引值上,我们现实中的第一个是索引1,但是在Python中的第一个数据元素的索引值为索引0,所以我们这里要对应Python的第一个索引的话应该是索引0,也就是names[0],将程序做如下修改
索引详解图
Python为访问最后一个列表数据元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表数据元素。编写程序如下所示:
这种语法很有用,因为经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引。例如索引-2返回倒数第二个列表元素。
索引详解图
3.使用列表数据元素
可像使用其他变量一样使用列表中的数据元素,例如,可以使用字符串拼接根据列表中的数据元素来创建消息。
比如:向李四打招呼,询问他已经学习Python多长时间了,编写程序如下所示
4.修改列表数据元素
修改列表数据元素的语法与访问列表数据元素的语法类似。要修改列表数据元素,可指定列表名和要修改的数据元素的索引,再指定该数据元素的新值。
列表变量名[index] = 新值
假设将第一个数据元素的姓名修改为'孙七',编写程序如下所示
可以根据索引值修改任何列表数据元素的值,而不是仅仅第一个数据元素的值。
5.添加列表数据元素
Python提供了多种在既有列表中添加新数据元素的内置函数
5.1在列表末尾添加数据元素(append函数)
在列表中添加新数据元素时,最简单的方式是将数据元素附加到列表末尾。
其语法格式:列表变量名.append(数据元素)
编写程序做如下所示:
append()函数让动态地创建列表十分简单。例如,可以先创建一个空列表,再使用一系列的append()函数添加数据元素。编写程序如下所示:
可以发现创建的列表与上面的一致。这种创建列表的方式极其常见,因为经常要等程序运行后,才知道在程序中需要存储哪些数据。
5.2在列表中插入数据元素
使用insert函数可在列表的任何位置添加新数据元素。为此,需要指定新数据元素的索引和值。
其语法格式为:列表变量名.insert(要插入的索引值,要插入的数据元素)
假设我们要将'孙七'插入到名字列表中索引第0个的位置,编写程序如下所示:
由此可见,insert函数在将数据元素插入之后,其索引值和索引值之后的数据元素都将依次往后移1位。和现实中的插队类似。
6.删除列表数据元素
经常需要从列表中删除一个或多个数据元素。可以根据索引值或值来删除列表中的数据元素。
6.1关键字del
在Python中,del关键字主要用于删除对象,也可以用于删除变量,删除列表变量或者列表的一部分等。
如果知道要删除的数据元素在列表中的索引值,可使用del关键字。
其语法格式:del 列表名[index] /要删除的对象/变量/列表/列表部分
我们分别从删除列表单个数据元素,连续多个数据元素(切片),列表变量来介绍
6.1.1删除单个列表数据元素
假设我们要把'张三'进行删除,我们发现'张三'所在的索引位置为0
编写程序如下所示:
6.1.2删除连续多个列表数据元素
假设我们要把连续着的'张三'和'李四'同时删除,我们发现'张三'和'李四'所在的索引位置是0和1,集合上表示的话就是说0到2,但不包括2,这里结合后面说的截取列表,可以将要删除的数据元素,也就是把'张三'和'李四'放到一个截取的列表中,然后通过del关键字进行删除,编写程序如下所示
输出结果上,就只剩下'王五'和'赵六'了。
6.1.3删除列表变量
假设我们要把列表变量删除,而不是清空列表。编写程序如下所示
通过上面的输出我们可以看到,程序报错了,提示names没有被定义,也就是说names变量在输出之前已经不存在了,也就是我们通过del关键字删除了。经过del关键字删除的列表变量,之后就不能够被使用了。
6.2使用pop函数删除数据元素
有时候,要将数据元素从列表中删除,删除的同时,我们后续还需要使用它的值。
6.2.1删除列表末尾数据元素
pop函数可删除列表末尾的数据元素,并能够接着使用它。pop源自这样的类比:弹出,列表就像一个栈,而删除列表末尾的数据元素相当于弹出栈顶元素。
其语法格式:列表变量名.pop()
假设我们要删除'赵六',然后输出'赵六'已经被删除,编写程序如下所示:
由此可见,pop函数是有返回值的。返回的是被删除的列表末尾元素。
6.2.2删除列表中任意位置处的数据元素
实际上,可以使用pop()来删除列表中任意位置的元素,只需在括号中指定要删除的元素的索引即可。
其语法格式:pop(索引值)
编写程序如下所示
我们可以发现使用pop函数弹出指定索引位置的数据元素后,后面的数据元素依次前移1位。
注意:我们删除元素时,如果不确定使用del关键字还是pop函数,下面是一个简单的判断标准:如果要从列表中删除一个数据元素,且不再以任何方式使用它,就用del关键字;如果你要在删除元素后还想继续使用它,就使用pop函数。
6.3根据值删除数据元素
有时候,不知道要从列表中删除的值所处的索引值。而只知道要删除的数据元素的值,可使用remove函数
其语法格式:列表变量名.remove(数据元素值)
6.3.1删除单个数据元素
假设我们要删除'王五'这个名字,编写程序如下所示
我们可以发现,remove函数本身只是将数据元素根据值删除,但是因为我们知道数据元素的值,后期要是想着使用这个我们删除的值,我们可以先进行存储,然后在用到的地方,再进行调用。
6.3.2删除多个与指定值相同的数据元素
remove()方法只删除第一个与指定元素值相同的数据元素。如果要删除的数据元素可能在列表中出现多次,就需要使用while循环来判断是否删除了所有这样的值。学习完while循环后再来学习这部分内容会更加容易理解。
假设名单中有多个'王五'这个名字,编写程序如下所示: