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基础——列表的主要内容,如果未能解决你的问题,请参考以下文章