Python基础——列表

Posted 薛定谔的猫ovo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础——列表相关的知识,希望对你有一定的参考价值。

文章目录


列表简述

有的时候需要把一堆东西暂时存储起来,因为它们有某种直接或间接的联系,需要把它们放在某种“组”或者“集合”中。很多接触过编程的同学应该会知道数组这个概念,数组就是把一大堆同种类的数据放在一起,然后通过数组下标进行索引。
但是,数组有一个基本要求,就是放在一起的数据必须类型一致,比如全是int类型,或float类型等。而由于Python的变量没有数据类型,故Python是没有数组的。但是,Python加入了更为强大的列表


创建列表

创建列表与创建普通变量一样,用中括号括起来一堆数据就可以了,数据之间使用逗号隔开。

像这样一个列表就创建成功了。当然,列表中的元素类型可以多种多样,甚至还可以包含着一个列表。

当然,也可以直接创建一个空列表。




向列表中添加元素

列表很灵活,所以它的内容不可能总是固定的。向列表中添加元素有以下几种方法:

一、append()方法——添加单个元素

要向列表中添加元素,可以使用append()方法:

要注意append()方法并不是一个内置函数,它是属于列表对象的一个方法。
此外,append()方法只能向列表中添加单个元素不能用append()方法同时添加多个元素



二、extend()方法——添加多个元素

我们已经知道不能用append()方法向列表中同时添加多个元素,此时,可以使用extend()方法向列表末尾添加多个元素:

为什么使用extend()方法也报错呢?这是因为extend()方法事实上是使用一个列表来扩展另一个列表,所以它的参数应该是一个列表

到现在为止,append()方法和extend()方法都是向列表的末尾添加元素,那如果想向列表的任意位置添加元素呢?就要用到下面的insert()方法。


三、insert()方法——向指定位置插入

insert()方法有两个参数:第一个参数代表在列表中的位置,第二个参数是在这个位置处插入一个元素,简单来说:
i n s e r t ( 位 置 , 元 素 ) insert(位置,元素) insert()
此外,还需要注意的是,凡是顺序索引,Python均从0开始。就像数组的下标,也是从0开始的。故让数字0出现在number列表的第一个位置,其正确代码应该为:



从列表中获取元素

和数组一样,可以通过元素的索引值(index)从列表中获取单个元素。需要注意的是,列表的索引值是从0开始的。

那按照这个方法,可以让列表中的元素互调,例如互换小李和小张:



从列表中删除元素

从列表中删除元素,介绍以下三种方法:remove()、del()、pop()。

一、remove()方法

使用remove()删除元素,并不需要知道这个元素在列表中的具体位置,只需要知道该元素在列表中存在就可以了

如果要删除的元素根本不在列表中时,程序就会报错

也就是说,remove()方法并不能指定删除某个位置的元素,这时就要用del来实现。


二、del语句

注意,del是一个语句,不是一个列表方法,所以不必加小括号()。

此外,如果想要删除整个列表,还可以直接用del+列表名删除:




三、pop()方法

最后,还可以用pop()方法弹出元素。
pop()方法默认是弹出列表中的最后一个元素

此外,pop()这个方法还可以灵活运用,上为它加上一个索引值作为参数的时候,它就会弹出这个索引值对应的元素



列表分片(拷贝)

利用索引值,每次可以从列表中获取一个元素。但如果需要一次性获取多个元素,就需要用到列表分片(slice)来实现

列表分片的基本语法:列表名[开始位置索引值 : 结束位置索引值]
注意,结束位置上的元素是不包含的。

利用列表分片,可以得到一个原来列表的拷贝(或者说副本),原来列表并没有发生改变。

如果没有开始位置,Python会默认开始位置是0。同样,如果没有结束位置,则Python会默认结束位置是列表末尾。如果没有放入任何索引值,只有一个冒号,将得到整个列表的拷贝。



分片操作实际上还可以接收第三个参数,其代表的是步长,默认情况下该值为1
此时基本语法就变为:列表名[开始位置索引值 : 结束位置索引值 : 步长]




当步长设为 -1 时,就相当于复制一个反转的列表:



关于分片拷贝的补充。看下面这个例子:

看似一样,事实上,对列表进行修改,可以看出差别:

可以注意到,list2的内容并没有改变,list3和list1一样,已经从大到小排好了序。这是因为,Python的变量就像是一个标签,一个名字,如下图所示:

从图上可以清晰看出,为一个列表(list1)指定另一个名字(list3)的做法,只是向同一个列表增加一个新的标签而已,真正地拷贝是要使用分片的方法



一些常用操作符

此前学过的大多数操作符都可以运用到列表上:




当列表中有多个元素时,默认是从第一个元素开始比较,只要第一个元素比较出结果,则就是最终结果。字符串的比较也是同样的道理(字符串比较的是第一个字符对应的ASCII码值的大小)



连接操作符(+)和重复操作符(*)

我们知道字符串可以用加号(+)来进行拼接,用乘号(*)来复制自身若干次。它们在列表上也是可以实现的:

加号(+)也叫作连接操作符,它允许我们把多个列表对象合并在一起,其实就相当于extend()方法实现的效果。
一般情况下,建议大家使用extend()方法来扩展列表,因为这样更为规范和专业。另外,连接操作符不能实现列表添加元素的操作


乘号(*)也叫作重复操作符,重复操作符也可以用于列表中。




当然复合赋值操作符也可以用于列表:



成员关系操作符in和not in

成员关系操作符in和not in是判断成员关系的操作符。


之前介绍过列表里面可以包含另一个列表,那么对于列表中的列表元素,能不能使用in和not in判断?

可见,in和not in只能判断一个层次的成员关系。如果要判断列表里面的列表的元素,应该先进入一层列表

那么对于列表中的列表,访问的方法类似于访问二维数组的方法



列表的一些其他常用方法

下面介绍几种常用的方法。

一、count()方法
count()方法的作用:计算它的参数在列表中出现的次数。



二、index()方法
index()方法的作用:返回它的参数在列表中的位置(多个相同元素返回第一个目标的位置)。

此外,index()方法还有两个参数,用于限定查找位置。因此可以查找第二个目标在list中的位置:



三、reverse()方法
reverse()方法的作用:将整个列表原地翻转。


四、sort()方法
sort()方法的作用:用指定的方式对列表的成员进行排序,默认不需要参数,从小到大排序。

其实,sort()这个方法有三个参数:sort(func, key, reverse)
func:设置排序的算法,默认是归并排序。
key:设置排序的关键字。
reverse:默认值为False,表示不颠倒排序。只要把False改为True,列表就相当于从大到小排序。

以上是关于Python基础——列表的主要内容,如果未能解决你的问题,请参考以下文章

Python基础--列表

Python基础-05-列表

python 操作符** (两个乘号就是乘方)

python中慎用乘号*快速初始化list

《Python基础教程》第二章:列表和元组

Python-基础-Chpater3