四、列表操作
① 列表
列表可以一次性
存储多个
数据,且可以为不同数据类型。
[数据1,数据2,数据3,数据4......]
列表的
作用
是一次性存储
多个数据,程序员可以对这些数据进行增、删、改、查
② 列表的常用操作方法
1、查找
所谓的列表查找方法
,即是查找
列表中数据的位置
和长度(个数)。
1.1、查找下标 返回数据
“下标”
又叫“索引”
,我们可以通过列表下标来获取对应数据。
# 实例
list1 = ['Tom','Ros','Lily']
print(list1[0])
print(list1[1])
print(list1[2])
-------------------------------------------------------
# 输出结果
Tom
Ros
Lily
1.2、index 查找数据
-
index(): 返回
指定
数据所在位置的下标。
语法:
列表序列.index(需要查找数据,开始位置下标,结束位置下标)
实例:
list1 = ['Tom','Ros','Lily'] print(list1.index('Lily')) # 2 print(list1.index('Tom',0,2)) # 0 print(list1.index('Ros',0,2)) # 1 # 不存在则报错 print(list1.index('Lily',0,2)) ------------------------------------------------------- # 输出结果 2 0 1 ------------------------------------------------------- # 报错 Traceback (most recent call last): File "F:\Feature_Detection\test.py", line 7, in <module> print(list1.index('Boy',0,2)) ValueError: 'Boy' is not in list
注意:① 如果查找的数据
不存在则报错。
② 不包含结束位置下标的数据。
1.3、count 统计出现次数
-
count(): 统计
指定数据
在当前列表中出现
的次数。语法:
列表序列.count(需要统计的数据)
实例:
list2 = ['Tom','Ros','Lily',1,1] # 指定数据在列表中出现的**次数** print(list2.count('Lily')) # 1 print(list2.count(1)) # 2 print(list2.count('Boy')) # 0 ------------------------------------------------------- # 输出结果 1 2 0
1.4、len 计算列表长度(个数)
-
len(): 访问列表长度,即
列表中
的数据个数。# 语法 print(len(列表)) ------------------------------------------------------- # 实例 list2 = ['Tom','Ros','Lily',1,1] print(len(list2)) ------------------------------------------------------- # 输出结果 5
2、判断
2.1、in 判断在….之内
- in:判断
指定数据
是否在某个列表序列中,如果在返回True
,否则返回Flase。
# 实例(in:在....之内)
name_list = ['Tom','Ros','Lily']
print('Tom' in name_list)
print('Boy' in name_list)
-------------------------------------------------------
# 输出结果
True
Flase
2.2、not in 判断不在….之内
- not in:判断
指定
数据不在
某个列表序列,如果不在
返回True
,否则返回Flase。
# 实例(not in: 不在....之内)
name_list = ['Tom','Ros','Lily']
print('Lily' not in name_list)
print('Marry' not in name_list)
-------------------------------------------------------
# 输出结果
False
True
2.3、案例体验
需求:查找用户输入
的名字是否存在。
'''
需求:注册邮箱,用户输入一个账号名,判断这个账号是否存在,如果存在则提醒用户,如果不存在则可以注册
1.用户输入账号
2.判断if...else...
'''
name_list = ['Tom','Ros','Lily']
name = input('请输入你的名字:')
# 判断账号名是否存在列表中
if name in name_list:
print('你输入的名字已经存在')
else:
name_list.append(name)
print('注册成功')
print(name_list)
-------------------------------------------------------
# 输出结果
请输入你的名字:zjh
注册成功
['Tom', 'Ros', 'Lily', 'zjh']
3、增加
作用:增加
指定数据到列表当中。
3.1、append 末尾追加数据
-
append():列表结尾
追加
数据。语法:
列表序列.append(数据)
实例:
# 实例 name_list = ['Tom','Ros','Lily'] name_list.append('xiaoming') name_list.append([11,12]) print(name_list) ------------------------------------------------------- # 输出结果 ['Tom', 'Ros', 'Lily', 'xiaoming', [11, 12]]
注意:① 列表是可变数据类型
② append函数追加数据的时候,如果是一个
序列
,追加整个序列
到列表的结尾(如字典、集合)。
3.2、extend 末尾逐个追加数据
-
extend():列表结尾追加数据,如果数据是一个
序列
,则将这个序列的数据逐一
添加到列表。语法:
列表序列.extend(数据)
实例:
# 单个数据 name_list = ['Tom','Ros','Lily'] name_list.extend('xiaodong') print(name_list) ------------------------------------------------------- # 输出结果 ['Tom', 'Ros', 'Lily', 'x', 'i', 'a', 'o', 'd', 'o', 'n', 'g']
# 序列数据 name_list = ['Tom','Ros','Lily'] name_list.extend(['zjh','xiaoming']) print(name_list) ------------------------------------------------------- # 输出结果 ['Tom', 'Ros', 'Lily', 'zjh', 'xiaoming']
注意:extend追加数据是一个序列,把数据序列里面的数据拆开后
逐一
追加到列表的结尾。
3.3、insert 指定位置新增数据
-
insert():指定位置新增数据。
语法:
列表序列.insert(位置下标,数据)
实例:
name_list = ['Tom','Ros','Lily'] name_list.insert(1,'aaa') print(name_list) ------------------------------------------------------- # 输出结果 ['Tom', 'aaa', 'Ros', 'Lily']
4、删除
4.1、del 删除数据(包括列表)
格式:
# 删除指定数据
del 列表序列[0]
-------------------------------------------------------
# 删除整个列表(包括符号)
del (列表序列)
实例:
name_list = ['Tom','Ros','Lily']
# 1. del (列表序列)
del name_list
print(name_list)
-------------------------------------------------------
# 输出结果
Traceback (most recent call last):
File "F:\Feature_Detection\test.py", line 4, in <module>
print(name_list)
NameError: name 'name_list' is not defined
name_list = ['Tom','Ros','Lily']
# 2. del(列表序列)
del (name_list[1])
print(name_list)
-------------------------------------------------------
# 输出结果
['Tom', 'Lily']
注意:del不止可以删除列表,还可以删除
指定下标数据。
4.2、pop 删除指定下标数据
-
pop():删除指定
下标
的数据,如果不指定下标,默认删除最后一个数据。
,无论是否指定,pop函数都会
返回
被删除的数据。语法:
返回值 = 列表序列.pop(指定下标)
实例:
name_list = ['Tom','Ros','Lily'] del_name = name_list.pop() print(del_name) print(name_list) ------------------------------------------------------- # 输出结果 Lily ['Tom', 'Ros']
4.3、remove 删除指定数据
-
remove():删除指定的
数据。
语法:
列表序列.remove(指定数据)
实例:
name_list = ['Tom','Ros','Lily'] name_list.remove('Ros') print(name_list) ------------------------------------------------------- # 输出结果 ['Tom', 'Lily']
4.4、clear 清空列表
-
clear():清空列表数据,
保留
列表。语法:
列表序列.clear()
实例
name_list = ['Tom','Ros','Lily'] # clear() -- 清空 name_list.clear() print(name_list) ------------------------------------------------------- # 输出结果 []
5、修改
5.1、修改指定 下标数据
“下标”
又叫“索引”
,通过索引的方式将原有的数据进行修改==(修改指定下标数据)==。
# 实例
name_list = ['Tom','Ros','Lily']
name_list[0] = 'zjh'
print(name_list)
-------------------------------------------------------
# 输出结果
['zjh', 'Ros', 'Lily']
5.2、reverse 逆置排序
-
reverse():将列表数据进行逆序排序(反过来排序)。
语法:
# reverse:逆转 列表序列.reverse()
实例:
# 实例 name_list = [1,5,2,3,7,6,4] name_list.reverse() print(name_list) ------------------------------------------------------- # 输出结果 [4, 6, 7, 3, 2, 5, 1]
5.3、sort 升序、降序
-
sort():将列表数据进行升序或者降序。
语法:
# key在字典中使用,reverse默认为False(升序) ------------------------------------------------------- 列表序列.sort( key=None,reverse)
实例:
# 升序 name_list = [1,5,2,3,7,6,4] name_list.sort() print(name_list) ------------------------------------------------------- # 输出结果 [1, 2, 3, 4, 5, 6, 7]
# 降序 name_list = [1,5,2,3,7,6,4] name_list.sort(reverse=True) print(name_list) ------------------------------------------------------- # 输出结果 [7, 6, 5, 4, 3, 2, 1]
6、复制
6.1、copy 复制数据
-
copy():复制数据,进行数据备份,以免发生特殊情况数据丢失。
语法
返回值 = 列表序列.copy()
实例:
# 实例 name_list = ['Tom','Ros','Lily'] name_list2 = name_list.copy() print(name_list) print(name_list2) ------------------------------------------------------- # 输出结果 ['Tom', 'Ros', 'Lily'] ['Tom', 'Ros', 'Lily']
③ 列表的循环与嵌套
1、列表的循环遍历
需求:依次
打印列表中的各个数据。
1.1、while 循环遍历
-
实例
''' 1. 准备表示下标数据 2. 循环while 条件 i < len(列表) -- 每个列表数据数量不清楚 遍历:依次按顺序访问到序列的每一个数据 i += 1 ''' ------------------------------------------------------- name_list = ['Tom','Ros','Lily'] i = 0 while i < len(name_list): print(name_list[i]) i += 1 ------------------------------------------------------- # 输出结果 Tom Ros Lily
1.2、for 循环遍历
-
实例
# 实例 name_list = ['Tom','Ros','Lily'] for i in name_list: # 遍历序列中的数据 print(i) ------------------------------------------------------- # 输出结果 Tom Ros Lily
2、 列表嵌套
所谓的列表嵌套
指的就是一个列表里面
包含了其他的子列表。
-
应用场景:要储存一、二、三年级的学生姓名,且每个班级的学生姓名在一个列表。
name_list = [['小明','小红','小绿'],['Tom','Ros','Lily'],['张三','李四','王五']]
如何查找数据
李四
?name_list = [['小明','小红','小绿'],['Tom','Ros','Lily'],['张三','李四','王五']] # 第一步:按下标查找李四所在的列表 print(name_list[2]) # 第二步:从李四所在的列表里面,再按下标找到李四 print(name_list[2][1]) ------------------------------------------------------- # 输出结果 ['张三', '李四', '王五'] 李四
3、综合案例 – 随机分配办公室
需求:有三个帮手,8位老师,8位老师随机分配到3个办公室。
'''
需求:8位老师,3个办公室,将8位老师随机分配到3个办公室
步骤:
1.准备数据
1.1 八位老师 -- 列表
1.2 三个办公室 - 列表嵌套
2.分配老师到办公室
*** 随机分配
就是把老师的名字写入办公室列表 -- 办公室列表追加老师名字数据
3. 验证是否分配成功
打印办公室详细详细:每个办公室的人数和对应的老师名字
'''
-------------------------------------------------------
import random
# 1. 准备数据
teachers = ['A','B','C','D','E','F','G','H']
offices = [[],[],[]]
-------------------------------------------------------
# 2. 分配老师到办公室 -- 取到每个老师放到办公室列表 -- 遍历老师列表数据
for name in teachers:
# 列表追加数据 -- append
num = random.randint(0,2)
offices[num].append(name)
print(offices)
-------------------------------------------------------
# 3. 验证是否分配成功
i = 1
for office in offices:
# 打印办公室人数 -- 子列表数据的个数 len()
print(f'办公室{i}的人数{len(office)},老师分别是:')
i += 1
# 打印老师的名字
# print() -- 每个子列表里面的名字个数不一定 -- 遍历 -- 子列表
for name in office:
print(name)
-------------------------------------------------------
# 输出结果
[['A', 'B', 'C'], ['D', 'E', 'G'], ['F', 'H']]
办公室1的人数3,老师分别是:
A
B
C
办公室2的人数3,老师分别是:
D
E
G
办公室3的人数2,老师分别是:
F
H