python中的数据可以分为下面四个类型
-
集合:几何中的元素无需、不可变。
-
数字:整数、浮点数、负数、复数等,支持各种算术运算。
-
序列:字符串、列表和元组都属于序列,支持索引、分片和合并等操作。
-
映射:字典,将减映射到值。
列表基本特点
列表常量用方括号表示,例如:[1,2,'abc']。列表对象是一种有序序列,其主要特点如下。
-
列表可以包含任意类型的对象:数字、字符串、列表、元组或其他对象。
-
列表是一个有序序列。与字符串类似,列表中的每一项按照从左到右的顺序,可通过位置偏移量进行索引和分片。
-
列表是可变的。首先列表长度可变,即可添加或删除列表成员。其次,列表中的对象可直接修改。
-
列表存储的是对象的引用,类似于C/C++的指针数组。每个列表成员存储的是对象的引用,而不是对象本身。
列表基本操作
列表基本操作包括创建列表、求长度、合并、重复、迭代、关系判断、索引、分片和矩阵等。
1.创建列表
列表对象可以用列表常量或list()函数来创建。例如:
>>> [] #创建一个空的列表对象
[]
>>> list() #创建一个空的列表对象
[]
>>> [1,2,3] #用同类型数据创建列表对象
[1, 2, 3]
>>> [1,2,('a','abc'),[12,34]] #用不同类型数据创建列表对象
[1, 2, ('a', 'abc'), [12, 34]]
>>> list('abcd') #用可迭代对象创建列表对象
['a', 'b', 'c', 'd']
>>> list(range(-2,3)) #用连续整数创建列表对象
[-2, -1, 0, 1, 2]
>>> list((1,2,3)) #用元组创建列表对象
[1, 2, 3]
>>> list(x+10 for x in range(5))#用解析结构创建列表对象
[10, 11, 12, 13, 14]
>>>
2.求长度
用len()函数获取列表长度。例如:
>>> len([])
0
>>> len([1,2,('a','abc'),[12,34]])
4
>>>
3.合并
加法运算可用于合并列表。例如:
>>> [1,2]+['abc',20]
[1, 2, 'abc', 20]
>>> [1,2]+[20,'abc'] #有序
[1, 2, 20, 'abc']
>>>
4.重复
乘法运算可用于创建具有重复值的列表。例如:
>>> [1,2]*3
[1, 2, 1, 2, 1, 2]
>>>
5.迭代
迭代操作可用于便利列表中的对象。例如:
>>> x=[1,2,('a','abc'),[12,34]]
>>> for a in x:print(a)
...
1
2
('a', 'abc')
[12, 34]
>>>
6.关系判断
可用in操作符判断对象是否属于列表。列表:
>>> 2 in[1,2,3]
True
>>> 'a' in [1,2,3]
False
>>>
7.索引
列表与字符串类似,可通过对象在列表中的位置来索引。列表对象也可通过索引进行修改。例如:
>>> x=[1,2,['a','b']]
>>> x[0] #输出第1个列表对象
1
>>> x[1]
2
>>> x[2]
['a', 'b']
>>> x[-1] #用负数从来列表末尾开始索引
['a', 'b']
>>> x[2]=100 #修改第3个列表对象
>>> x
[1, 2, 100]
>>>
8.分片
与字符串类似,可通过分片来获得列表中的部分对象。也可通过分片将多个对象替换成新的对象。例如:
>>> x=list(range(10)) #创建列表对象
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[2:5] #返回分片列表
[2, 3, 4]
>>> x[2:] #省略分片结束位置时,分片直到列表结束
[2, 3, 4, 5, 6, 7, 8, 9]
>>> x[:5] #省略分片开始位置时,分片从第一个对象开始
[0, 1, 2, 3, 4]
>>> x[2:7:2] #指定分片时偏移量步长
[2, 4, 6]
>>> x[7:2:-2] #步长为负数时,按相反顺序获得对象
[7, 5, 3]
>>> x[2:5]='abc' #通过分片替换多个对象
>>> x
[0, 1, 'a', 'b', 'c', 5, 6, 7, 8, 9]
>>> x[2:5]=[10,20] #通过分片替换多个对象
>>> x
[0, 1, 10, 20, 5, 6, 7, 8, 9]
>>>
9.矩阵
列表中的对象可以是任意类型,所以可通过嵌套列表表示矩阵。例如
>>> x=[[1,2,3],[4,5,6],[7,8,9]]
>>> x[0] #用一个位置信息索引嵌套的字列表
[1, 2, 3]
>>> x[0][0] #用两个位置信息索引字列表包含的对象
1
>>>
常用列表方法
>>> x=[1,2]
>>> x.append('abc') #末尾添加一个对象
>>> x
[1, 2, 'abc']
>>>
>>>#下面是用extend()方法用于在列表末尾添加多个对象,参数为可迭代对象
>>> x=[1,2]
>>> x.extend(['a','b']) #用列表对象做参数
>>> x
[1, 2, 'a', 'b']
>>> x.append('abc') #用字符串做参数时,字符串作为一个对象
>>> x
[1, 2, 'a', 'b', 'abc']
>>>
>>>#insert方法用于在指定位置插入对象
>>> x=[1,2,3]
>>> x.insert(1,'abc')
>>> x
[1, 'abc', 2, 3]
>>>
>>>#按值删除对象,remove方法用于删除列表中指定值,如果有重复,则删除第一个
>>> x=[1,2,3]
>>> x.remove(2)
>>> x
[1, 3]
>>>
>>>#pop方法可按指定位置删除对象,省略位置时删除对象列表一个对象。删除时返回该对象
>>> x=[1,2,3,4]
>>> x.pop()
4
>>> x
[1, 2, 3]
>>> x.pop(1)
2
>>> x
[1, 3]
>>>
>>>#del语句删除列表中的指定对象或分片
>>> x=[1,2,3,4,5,6]
>>> del x[0]
>>> x
[2, 3, 4, 5, 6]
>>> del x[2:4]
>>> x
[2, 3, 6]
>>>
>>>#clear删除全部对象
>>> x=[1,2,3]
>>> x.clear()
>>> x
[]
>>>
>>>#copy复制列表对象
>>> x=[1,2,3]
>>> y=x.copy()
>>> y
[1, 2, 3]
>>>
>>>#sort方法可将列表中的对象排序。若全部是数字,则从小到大。,若列表对象全是字符串,则按字典顺序排序。若列表包含多种类型,则会出错。
>>> x=[10,2,30,5]
>>> x.sort()
>>> x
[2, 5, 10, 30]
>>> x=['bbc','abc','BBC','Abc']
>>> x.sort()
>>> x
['Abc', 'BBC', 'abc', 'bbc']
>>> x=[1,5,3,'bbc','abc','BBC']
>>> x.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < int()
>>>
>>>#reverse方法将列表中对象的位置翻转。
>>> x=[1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]
>>>