容器详解
列表
- 列表是 有序、可变 的数据类型
- 列表中可以包含 不同类型 的对象
- 列表可以由 [] 创建
- 支持 下标 及 切片 操作
列表的定义
user_list = ["铁锤", "钢弹", "弹头"]
number_list = [98, 88, 666, 12, -1]
data_list = [1, True, "nfx"]
常用方法(功能:增删改查)
为了方便我们操作列表,Python中对所有列表提供了一些的功能。
序号 | 分类 | 关键字 / 函数 / 方法 | 说明 |
---|---|---|---|
1 | 增加 | 列表.insert(索引, 数据) | 在指定位置插入数据 |
列表.append(数据) | 在末尾追加数据 | ||
列表.extend(列表2) | 将列表2 的数据追加到列表 | ||
2 | 修改 | 列表[索引] = 数据 | 修改指定索引的数据 |
3 | 删除 | del 列表[索引] | 删除指定索引的数据 |
列表.remove(数据) | 删除第一个出现的指定数据 | ||
列表.pop | 删除末尾数据 | ||
列表.pop(索引) | 删除指定索引数据 | ||
列表.clear | 清空列表 | ||
4 | 统计 | len(列表) | 列表长度 |
列表.count(数据) | 数据在列表中出现的次数 | ||
5 | 排序 | 列表.sort() | 升序排序 |
列表.sort(reverse=True) | 降序排序 | ||
列表.reverse() | 逆序、反转 |
增
-
追加,在原列表中尾部追加值
图例
-
插入,在原列表的指定索引位置插入值
图例
-
扩展,将一个列表中的元素逐一添加另外一个列表
图例
删除
-
删除
- 根据值
- 从左向右找,找到了就删除,然后停止搜索
- 没有返回值
user_list = ["詹姆斯", "韦德", "波什"] user_list.remove("波什") print(user_list) # ["詹姆斯", "韦德"]
-
弹出
- 根据 索引
- 默认弹出 尾部元素
- 有返回值
user_list = ["詹姆斯", "韦德", "波什"] player = user_list.pop() # 弹出列表尾部元素,并将弹出的元素返回 print(user_list, player) # ["詹姆斯", "韦德"] "波什" player = user_list.pop(1) # 弹出索引为 1 的元素,并将弹出的元素返回 print(user_list, player) # ["詹姆斯"] "韦德"
-
del 关键字
- 使用
del
关键字(delete
) 同样可以删除列表中元素 del
关键字本质上是用来 将一个变量从内存中删除的- 如果使用
del
关键字将变量从内存中删除,后续的代码就不能再使用这个变量了
user_list = ["詹姆斯", "韦德", "波什"] del user_list[1] print(user_list) # ["詹姆斯", "波什"]
在日常开发中,要从列表删除数据,建议 使用列表提供的方法
- 使用
-
清空 原列表
user_list = ["詹姆斯", "韦德", "波什"] user_list.clear() print(user_list) # []
改
- 修改动作一般是 先查,后改
- 查:索引,切片
user_list = ["詹姆斯", "韦德", "波什"]
print(user_list[0]) # 查询,詹姆斯
user_list[0] = "杜兰特" # 改
print(user_list) # ["杜兰特", "韦德", "波什"]
查
- 通过索引查询
- 通过切片查询
遍历循环
- 遍历 就是 从头到尾 依次 从 列表 中获取数据
- 在 循环体内部 针对 每一个元素,执行相同的操作
- 在
Python
中为了提高列表的遍历效率,专门提供的 迭代 iteration 遍历 - 使用
for
就能够实现迭代遍历
# for 循环内部使用的变量 in 列表
for name in name_list:
# 循环内部针对列表元素进行操作
print(name)
图例
其他
-
获取长度:
len()
user_list = ["詹姆斯", "韦德", "波什"] print( len(user_list) ) # 3
-
反转:
reverse()
user_list = ["詹姆斯", "韦德", "波什"] user_list.reverse() print(user_list) # ["波什", "韦德", "詹姆斯"]
-
排序:
sort()
,给列表中的元素排序,默认按从小到大的顺序num_list = [2, 3, 1, 4, -100, 10] num_list.sort() # 默认从小到大,正序排列 print(num_list) num_list.sort(reverse=True) # reverse=True,倒序排列 print(num_list)
-
统计元素出现次数:
count()
num_list = [2, 2, 3, 3, -100, 3] print(num_list.count(3)) # 2 print(num_list.count(-100)) # 1
-
转化:其他类型的元素转换成列表
message = "今天手感不错进了10个三分球" data = list(message) print(data) # ['今', '天', '手', '感', '不', '错', '进', '了', '1', '0', '个', '三', '分', '球']
应用场景
- 尽管
Python
的 列表 中可以 存储不同类型的数据 - 但是在开发中,更多的应用场景是
- 列表 存储相同类型的数据
- 通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
练习题
-
写代码,有如下列表,按照要求实现每一个功能。
li = ["alex", "jerry", "tom", "barry", "wall"]
- 计算列表的 长度 并输出
- 请通过步长获取索引为 偶数 的所有值,并打印出获取后的列表
- 列表中追加元素 mike,并输出添加后的列表
- 请在列表的第 1个位置插入元素 Tony ,并输出添加后的列表
- 请修改列表第 2 个位置的元素为 Kelly,并输出修改后的列表
- 请将列表 l2 = [1,”a”,3,4,”heart”] 的每一个元素追加到列表 li 中,并输出添加后的列表
- 请删除列表中的元素 ”barry”,并输出删除后的列表
- 请删除列表中的第 2 个元素,并 输出 删除元素后的列表
元组
元组的定义 tuple
- 通过
()
创建元组 - 元组是有序的、不可变类型
- 与列表类似,作用于列表的操作,绝大数也可以作用于元组
- 一般用于存储一些在程序中不应该被修改的一系列值
常见操作
由于元组不可变的特性,所有没有 增、删、改 操作
atuple = (10, 30, 25, 88) # 定义一个元组
atuple[0] = 100 # 报错,元组定义以后,不可被修改,赋值
atuple.count(30) # count(), 统计元组 atuple 中 30 出现的次数 1
atuple.index(88) # index(), 计算元组 atuple 中元素 88 的下标 3
注意:单元素元组的定义
如果一个元组中只有一个元素,那么创建该元组时,需要加上一个 逗号,否则创建失败
a = ("hello") # 没加逗号的情况
print(a)
print(type(a)) # str
a = ("hello", ) # 加逗号的情况
print(a)
print(type(a)) # tuple