序列性容器–列表
列表:
类似于数组,可以存储多种类型的数据
例如:字符串,汉字,单个字符,列表,等等
list[10,20,30,a,asd,[1,2,3,]]
列表也是一个序列式容器, 同样支持索引和切片语法.
# 创建空列表
my_list = []
# 创建带有元素的列表
my_list = [10, 20, 30]
# 通过索引来访问列表中元素
print(my_list[0])
# 也可以通过索引来修改元素
my_list[0] = 100
# 通过切片语法获得区间元素
print(my_list[1:])
# 列表可存储不同类型的数据
my_list = ['John', 18, True]
# 列表中也可存储列表
my_list = [[10, 20], [30, 40], [50, 60]]
注意: 列表中支持存储不同类型的数据, 如果有没有特殊需求, 建议存储相同类型数据. 这样可以对数据应用统一的操作.
列表的操作
1.列表遍历
list=[1,2,3,4,5,6]
i=0
while i<len(list):
print(list[i],end="\t")
i += 1
运行结果:
1 2 3 4 5 6
2.列表查找和修改
已知: 列表中包含 5 个元素, 分别为: 10、20、30、40、50. 需要将列表中 40 这个元素替换成 100, 如何实现?
1.列表不存在类似字符串 replace 的方法.
2.查询 40 这个元素在列表中的索引位置.
3.根据索引位置修改元素为 100.
index 方法可以根据值查找, 查找到返回该值元素所在的位置, 查找失败会报错, 程序终止. 我们可以先使用 count 方法可以统计值出现的次数, 如果不为0, 再使用 index 方法.
my_list = [10, 20, 30, 40, 50]
# 要修改的值
old_value = 40
# 更新的新值
new_value = 100
# 判断要修改的值是否存在
if my_list.count(old_value):
# 获得指定值的位置
position = my_list.index(old_value)
# 根据值来修改元素
my_list[position] = new_value
print(my_list)
运行结果:
[10, 20, 30, 100, 50]
3.列表的插入和删除元素
插入元素分为:
- 1.插入单一元素
1.1尾插(append方法)
1.2.指定位置插入(insert方法) - 2.插入一个列表(多个元素)(extend方法,追加到尾部)
list=[10,90,30,40,50,20]
list1=[1,2,3]
# 插入
list.append(100)
print(list)
list.insert(1,200)
print(list)
list.extend(list1)
print(list)
运行结果:
[10, 90, 30, 40, 50, 20, 100]
[10, 200, 90, 30, 40, 50, 20, 100]
[10, 200, 90, 30, 40, 50, 20, 100, 1, 2, 3]
删除元素分为:
1.根据值删除, 使用 remove 方法. 该方法只能删除第一次出现的值.
2.根据索引删除, 使用 pop 方法, 该方法不传递索引时默认删除最后一个元素, 传递索引则根据索引删除元素.
list=[10,90,30,40,50,20]
list.remove(10)
print(list)
list.pop()
print(list)
list.pop(2)
print(list)
运行结果:
[90, 30, 40, 50, 20]
[90, 30, 40, 50]
[90, 30, 50]
4.列表元素排序
排序指的是记录按照要求排列.
列表提供了相关方法来对列表中的元素进行排序. 分别是:
1.将列表中的元素反转.
2.列表中的元素升序(从小到大)、降序排列(从大到小).
list=[10,90,30,50,40,20]
# 对列表中的反转
list.reverse()
print('反转:', list)
# 对列表中的元素排序, 默认升序
list.sort()
print('升序排序:', list)
# 对列表中的元素排序, 降序排列
list.sort(reverse=True)
print('降序排序:', list)
运行结果:
反转: [20, 40, 50, 30, 90, 10]
升序排序: [10, 20, 30, 40, 50, 90]
降序排序: [90, 50, 40, 30, 20, 10]