Python基础数据类型之列表
一、什么是列表
列表是Python最基本的数据类型之一,类似于C语言的数组,将一些数据打包存放在一个容器中,但是Python的数组要强大的多,它几乎可以存放所有类型的数据。它就类似于一个工厂的仓库,里面按顺序存放着各式各样的数据类型。
二、如何创建一个列表
方法1:用一对中括号将一堆数据包裹起来,各个数据之间用逗号隔开就形成了一个列表
>>> a=[1,'A','吴依杰','Hello python'] >>> a [1, 'A', '吴依杰', 'Hello python']
方法2:用工厂函数list(iterable)将一个可迭代的对象生成一个列表,当传入的参数不是可迭代对象时,就会引发异常
>>> b=list('Hello') >>> b ['H', 'e', 'l', 'l', 'o'] >>> c=list(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not iterable >>>
方法3:用列表生成式生成列表
>>> d = [x*2 for x in range(10)] >>> d [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] >>>
三、列表的方法
1.向列表末尾追加一个元素(append)
>>> list1 = [1,2,3,4] >>> list1.append(5) >>> list1 [1, 2, 3, 4, 5] >>>
2.向列表末尾添加多个元素,接收的参数为一个列表,其实相当于用一个列表去扩展另一个列表(extend)
>>> list1 = [1,2,3,4] >>> list1.extend([5,6]) >>> list1 [1, 2, 3, 4, 5, 6] >>>
3.根据索引位置向列表中插入元素,Python的索引值是从0开始算的(insert)
>>> list1 = [1,2,3,4] >>> list1.insert(0,0) >>> list1 [0, 1, 2, 3, 4] >>>
4.根据元素名删除一个列表中一个已知的元素(remove)
>>> list1 = [1,2,3,4] >>> list1.remove(2) >>> list1 [1, 3, 4] >>>
5.以弹出式移除列表中的元素,当不指定要弹出元素的索引值时,默认弹出最后一项,当索引值给定时,弹出索引值对应的元素(pop)
>>> list1 = [1,2,3,4] >>> list1.pop() 4 >>> list1 [1, 2, 3] >>> list1.pop(1) 2 >>> list1 [1, 3] >>>
6.删除列表元素还有一个del语句,它不是list的类方法,而是一条Python语句(del)
>>> list1 = [1,2,3,4] >>> del list1[1] >>> list1 [1, 3, 4] >>> del list1 >>> list1 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'list1' is not defined >>>
7.根据给定的列表中的元素返回其在列表中的索引值(index)
>>> list1 = ['A','B','C','D'] >>> list1.index('A') 0 >>> list1.index('C') 2 >>>
8.根据给定的元素返回其在列表中的个数(count)
>>> list1 = [1,1,2,3,3,3] >>> list1.count(1) 2 >>> list1.count(2) 1 >>> list1.count(3) 3 >>> list1.count('A') 0 >>>
9.浅拷贝一个列表(copy)
>>> list1 = [1,2,3] >>> list2 = list1.copy() >>> list2 [1, 2, 3] >>>
10.反转列表(reverse)
>>> list1 = [1,2,3,4] >>> list1.reverse() >>> list1 [4, 3, 2, 1] >>>
11.当列表元素全部为int型时,返回一个正排序后的列表,当sort方法的关键字参数reverse=True时,返回一个反排序后的列表(sort)
>>> list1 = [1,2,3,4] >>> list1.reverse() >>> list1 [4, 3, 2, 1] >>> list1 = [1,8,4,3] >>> list1.sort() >>> list1 [1, 3, 4, 8] >>> list1 = [1,8,4,3] >>> list1.sort(reverse=True) >>> list1 [8, 4, 3, 1] >>>
四、列表的其他操作
1.列表的切片
列表的切片操作是经常要使用的操作,所谓列表切片即根据列表的索引值的对应关系对列表进行截取操作,一般分为下面几种做法
格式:list1[n:m:step]
n:起始索引位置(当n省略不写时,表示从列表开头开始索引)
m:结束索引位置(当m省略不写时,表示索引值从n开始直到结束)
step:步长(即间隔几个数据取值,step不写时默认值为1)
>>> list1 = [1,2,3,4] >>> list1[:] #m,n都不写,拷贝整个列表 [1, 2, 3, 4] >>> list1[1:3] #结果为索引值为1到3对应的元素,不包括最后一个 [2, 3] >>> list1[1:] #省略m的情况,返回从n到最后的所有值 [2, 3, 4] >>> list1[:3] #省略n的情况,返回开始到m的所有值,不包括m [1, 2, 3] >>> list1[1:4:2] #n,m都有值,步长为2的情况 [2, 4] >>> list1[:4:2] #省略n,步长为2的情况 [1, 3] >>> list1[1::2] #省略m,步长为2的情况 [2, 4] >>> list1[::2] #省略n和m,步长为2的情况 [1, 3] >>>
2.列表的运算操作
列表相加
列表相加即返回两个列表拼接的结果
>>> list1 = [1,2] >>> list2 = [3,4] >>> list3 = list1+list2 >>> list3 [1, 2, 3, 4] >>>
列表相乘
列表相乘即返回N个列表拼接后的结果
>>> list1 = [1,2] >>> list2 = list1*5 >>> list2 [1, 2, 1, 2, 1, 2, 1, 2, 1, 2] >>>
列表比较大小
列表比较大小的规则是:依次比较相同索引位置的元素的值(当为字符串时,比较其ASCII码大小),当有某一次比较出结果时,即返回一个Bool类型的值
>>> list1 = [1,2] >>> list2 = [3,4] >>> list2>list1 True >>>