1. 列表的基础概念
列表(list)是包含0个或多个数据项的有序序列。与元组不同,列表的长度和内容都是可变的,可自由对列表中数据项进行增加、删除或替换。列表使用非常灵活。列表的数据项不需要具有相同的类型。
列表的表示:用中括号(方括号)括起若干个数据元素,元素之间用逗号隔开。
lsa = [1, 2, 3]
lsb = ['a', 'b', 'c']
lsc = [425, 'BIT', [10, 'CS'], 425]
lsd = []
列表的操作:对批量数据的处理,基本都可以用列表实现。
2. 列表的操作
2.1 访问列表元素
语法:<列表名>[<序号>]
实例如下:
ls = [425, "BIT", [10, "CS"], 425]
print(ls[0]) # 访问列表的第一个元素:425
print(ls[2]) # 访问列表的第三个元素:[10, "CS"]
print(ls[2][-1][0]) # [10, "CS"] --> "CS" --> "C"
输出结果为:
2.2 更改列表元素
语法:
ls[i] = x 直接对列表的某项元素赋值
ls[i: j] = lt 用列表lt替换列表ls中第i到j项数据(不含第j项,下同)
ls[i: j: k] = lt 用列表lt替换列表ls中第i到j以k为步的数据
当使用一个列表改变另一个列表值时,Python不要求两个列表长度一样,但遵循“多增少减”的原则
【示例1 】修改单个元素
ls = [425, "BIT", [10, "CS"], 425]
print(ls)
ls[0] = 500 # 将第一个值修改为500
print(ls)
ls[2] = True # 将第二个值修改为True
print(ls)
输出结果为:
【示例2 】修改多个元素
vlist = [0, 'bit', 'computer', 'python', 4]
# 用["new_bit", "new_computer", 123]替换['bit', 'computer']
vlist[1:3] = ["new_bit", "new_computer", 123]
print(vlist)
# 用["fewer"]替换['new_bit', 'new_computer']
vlist[1:3] = ["fewer"]
print(vlist)
输出结果为:
2.3 增加元素:
语法:
list.append(x) 在列表ls最后增加一个元素x
ls += lt或ls.extend(lt) 将列表lt元素增加到列表ls中
ls.insert(i, x) 在列表ls第i位置增加元素x
【示例】
ls = [0, 1, 2, 3, 4]
ls2 = ['c', 'd', 'e']
ls.append("a") # 添加'a'到列表最后
print(ls)
ls.insert(0, 'b') # 在列表开头增加元素
print(ls)
ls.extend(ls2) # 将ls2插入到ls中
print(ls)
输出结果为:
2.4 删除元素
语法:
ls.pop(i) 将列表ls中第i项元素取出并删除该元素,i 默认为-1(即最后一项)
ls.remove(x) 将列表中出现的第一个元素x删除
del ls[i: j] 删除列表ls第i到j项数据,等价于ls[i: j]=[]
【示例】
ls = [0, 1, 2, 3, 4]
ls.pop() # 列表去除最后一个元素
print(ls)
x = ls.pop(0)
print(ls)
print(x)
输出结果为:
2.5 列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
如下所示:
Python 表达式 | 结果 | 描述 |
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print(x, end=" ") | 1 2 3 | 迭代 |
2.6 嵌套列表
使用嵌套列表即在列表里创建其它列表,例如:
a = ['a', 'b', 'c']
n = [1, 2, 3]
x = [a, n]
print(x) # [['a', 'b', 'c'], [1, 2, 3]]
print(x[0]) # ['a', 'b', 'c']
print(x[0][1]) # b
2.7 列表的函数或方法
函数或方法 | 描述 |
ls[i] = x | 替换列表ls第i数据项为x |
ls[i: j] = lt | 用列表lt替换列表ls中第i到j项数据(不含第j项,下同) |
ls[i: j: k] = lt | 用列表lt替换列表ls中第i到j以k为步的数据 |
ls.append(x) | 在列表ls最后增加一个元素x |
ls.insert(i, x) | 在列表ls第i位置增加元素x |
ls += lt或ls.extend(lt) | 将列表lt元素增加到列表ls中 |
ls.pop(i) | 将列表ls中第i项元素取出并删除该元素 |
del ls[i: j] | 删除列表ls第i到j项数据,等价于ls[i: j]=[] |
del ls[i: j: k] | 删除列表ls第i到j以k为步的数据 |
ls.remove(x) | 将列表中出现的第一个元素x删除 |
ls.clear() | 删除ls中所有元素 |
ls.sort(key, reverse) | 列表元素安装key进行排序,reverse默认为False |
ls.reverse(x) | 列表ls中元素反转 |
ls.copy() | 生成一个新列表,复制ls中所有元素 |
list() | 元组或字符串等转化成列表 |
列表之间的赋值:与整数和字符串不同,列表要处理一组数据,因此,列表必须通过显式的数据赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象。
>>>ls = [425, "BIT", 1024] #用数据赋值产生列表ls
>>>lt = ls #lt是ls所对应数据的引用,lt并不包含真实数据
>>>ls[0] = 0
>>>lt
[0, 'BIT', 1024]
为了避免这种情况,一般不用列表之间赋值,而是采用深度复制。