一、列表的格式
[数据1,数据2,数据3]
列表可以一次性存储多个数据,且可以为不同的数据类型
二、列表的常用操作
增、删、改、查
1.查找
(1)下标
list1=['aa','vv','nihao']
print(list1[0]) #返回aa
print(list1[1]) #返回vv
print(list1[2]) #返回nihao
(2)函数
- index() :返回指定数据所在位置的下标
语法:列表序列.index(数据,开始位置下标,结束位置下标) - count():统计指定数据在当前列表中出现的次数
- len(): 访问列表长度,即列表中数据的格式
list1=['aa','vv','nihao']
#1.index()
print(list1.index('vv',0,2)) #返回1,因为vv的下标是1,下标是从0开始的
#2.count()
print(list1.count('aa')) #返回1,aa只出现过一次,如果数据不存在,则返回0
#3.len()
print(len(list1)) #返回3,list1有3个
2.判断是否存在
- in:判断指定数据在某个列表序列,如果在返回true,否则false
- not in:判断指定数据不在某个列表序列,如果不在返回true,否则false
list1=['aa','vv','nihao']
print('aa' in list1) #返回true
print('vv' not in list1) #返回false
案列
需求:查找用户输入的名字是否已经存在
name_list = ['czd', 'lcq', 'lining']
name = input("请输入要搜索的名字:")
if name in name_list:
print(f'你输入的名字为{name},名字已经存在')
else:
print(f'你输入的名字为{name},名字不存在')
输入czd,返回你输入的名字是czd,名字已经存在
3.增加: 增加到指定数据到列表中
(1)append() :列表结尾追加数据
语法:列表序列.append(数据)
name_list = ['czd', 'lcq', 'lining']
name_list.append('xiaoming')
print(name_list)
#返回['czd', 'lcq', 'lining', 'xiaoming']
name_list.append([11,20])
print(name_list)
#返回['czd', 'lcq', 'lining', 'xiaoming', [11, 20]]
append() ==追加的数据是一个序列。则追加整个序列到列表==
注:列表追加数据的时候,直接在原列表里追加指定的数据,即修改了原列表 ,故列表为可变类型
(2)extend() :列表结尾追加数据,如果一个数据是一个序列,则将这个序列的数据逐一添加到列表
语法:列表序列.extend(数据)
name_list = ['czd', 'lcq', 'lining']
name_list.extend('xiaoming')
print(name_list)
#返回['czd', 'lcq', 'lining', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g']
name_list.extend(['ximing','xiaohong'])
print(name_list)
#返回['czd', 'lcq', 'lining', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g', 'ximing', 'xiaohong']
(3)insert(): 指定位置新增数据
语法:列表序列.insert(位置下标,数据)
name_list = ['czd', 'lcq', 'lining']
name_list.insert(2,'xiaoming')
print(name_list)
#返回['czd', 'lcq', 'xiaoming', 'lining']
name_list.insert(1,['ximing','xiaohong'])
print(name_list)
#返回['czd', ['ximing', 'xiaohong'], 'lcq', 'xiaoming', 'lining']
4.删除
(1)del
语法: del 目标
- 删除列表
- 删除指定下标数据
name_list = ['czd', 'lcq', 'lining']
#del name_list # 返回报错,说明已经删除
del删除下标的数据
del name_list[0]
print(name_list) #返回['lcq', 'lining'],删除了第一个数据
在这里插入代码片
(2)pop(): 删除指定下标数据,如果不指定下标,默认删除最后一个数据,
注:==无论是按照下标还是删除最后一个,pop函数都会返回被删除的数据
语法: 列表序列.pop(下标)
name_list = ['czd', 'lcq', 'lining']
del_name = name_list.pop()
#print(del_name) #返回lining,因为默认删除最后一个数据,返回最后一个数据
#print(name_list) #返回['czd', 'lcq']
指定下标删除的数据
name_list = ['czd', 'lcq', 'lining']
del_name = name_list.pop(0)
print(del_name) #返回czd,因为指定删除下标为0 的数据,返回czd数据
print(name_list) #返回['lcq', 'lining']
(3)remove(数据):移除某个数据的第一个匹配项
语法:列表序列.remove(数据)
(4)clear():清空列表
语法:列表序列.clear()
5.修改
(1)修改指定下标数据
name_list = ['czd', 'lcq', 'lining']
name_list[0]='aaa' #找到下标直接赋值
print(name_list) #返回['aaa', 'lcq', 'lining']
(2)逆序reverse()
list1=[1,2,3,4,5,6]
list1.reverse()
print(list1) #返回[6, 5, 4, 3, 2, 1]
(3)排序sort()
语法:列表序列.sort(key=none,reverse=False)
注:reverse表示排序规则,reverse=true降序,reverse=false升序(默认)
list1=[1,2,3,7,5,6]
#list1.sort() #返回[1, 2, 3, 5, 6, 7]
#list1.sort(reverse=False) #返回[1, 2, 3, 5, 6, 7]
list1.sort(reverse=True) #返回[7, 6, 5, 3, 2, 1] 降序
print(list1)
6.复制
(1)copy()
name_list = ['czd', 'lcq', 'lining']
name_list1=name_list.copy()
print(name_list1)
print(name_list)
#返回['czd', 'lcq', 'lining']
['czd', 'lcq', 'lining']
三.列表的遍历
1.while
需求: 依次打印列表中的各个数据
name_list = ['czd', 'lcq', 'lining']
i=0
while i<len(name_list):
print(name_list[i])
i+=1
2.for
for循环遍历数据
name_list = ['czd', 'lcq', 'lining']
for i in name_list:
print(i)
四.列表的嵌套
列表嵌套就是一个列表里面包含了其他的子列表
name_list = [[‘czd’, ‘lcq’, ‘lining’],[‘aa’,‘ss’,‘ww’],[‘qqwq’,‘wecfr’]]
print(name_list[2][1])
查找到的数据是下标为2的子列表中的下标为1的数据
例题
需求:8位老师,3个办公室,将8位老师随机分配到3个办公室
"""
步骤:
1.准备数据
8位老师---列表
3个办公室--列表嵌套
2.分配到办公室
*** 随机分配
办公室列表追加到老师办公室
3.验证是否分配成功
打印每个办公室对应老师的名字
"""
代码:
#1.准备数据
teachers=['A','B','C','D','E','F','G','H']
offices=[[],[],[]] #列表嵌套
import random #调用随机模块
#2.分配老师到办公室--取到老师到每个办公室列表,--遍历老师列表数据
for name in teachers:
#列表追加数据--append,extend,insert
num = random.randint(0,2)
offices[num].append(name)
#3.
i=1
for office in offices:
print(f'办公室的人数是{len(office)},老师分别是:')
for name in office:
print(name)
i+=1