格式:
[数据1,数据2,数据3,数据4......]
作用:
列表可以一次性存储多个数据,且可以为不同数据类型
一.列表的常用操作对列表的常用操作:
查找、增加、删除、修改
1.列表操作之查找(1)下标
应用:
a = ['hello', 'world', 'python']
print(a[0])
print(a[1])
print(a[2])
结果:
(2)函数
index():返回指定数据所在位置的下标
语法:
列表序列.index(数据,开始位置下标,结束位置下标)
应用:
a = ['hello', 'world', 'python']
print(a.index('python'))
结果:
注意:如果查找数据不存在会报错
count():统计指定数据在当前列表中出现的次数
应用:
a = ['hello', 'world', 'python']
print(a.count('python'))
结果:
len():访问列表的长度,即列表中数据的个数
应用:
a = ['hello', 'world', 'python']
print(len(a))
结果:
(3)判断是否存在
in:判断指定数据在某个列表序列,如果存在返回True,否则返回False
not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False
应用:
a = ['hello', 'world', 'python']
print('python' in a)
print('p' in a)
print('python' not in a)
print('p' not in a)
结果:
作用:
增加指定数据到列表中
append():列表结尾追加数据
语法:
列表序列.append(数据)
应用:
a = ['hello', 'world', 'python']
a.append('1')
print(a)
a.append(['11', '22'])
print(a)
结果:
注意:
1.列表为可变类型(列表中的数据可以改变)
2.如果append函数追加的数据是一个序列,它会追加整个序列到列表的结尾
extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
应用:
a = ['hello', 'world', 'python']
a.extend('1234')
print(a)
a.extend(['123', '456'])
print(a)
结果:
注意:
1. '1234'是一个字符串序列,所以也会被拆开
2.extend函数如果追加数据为一个序列,它会将数据序列中的数据拆开逐一追加到列表的末尾
insert():指定位置新增数据
语法:
列表序列.insert(位置下标,数据)
应用:
a = ['hello', 'world', 'python']
a.insert(1, 'a')
print(a)
a.insert(3, ['b', 'c'])
print(a)
结果:
del 删除
语法:
del 目标
应用:
a = ['hello', 'world', 'python']
del a[0]
print(a) # 结果:['world', 'python'],将第一个数据删除
del a
print(a) # 结果:程序报错,列表a已被删除,不存在
pop():删除指定下标的数据,(不写下标默认为最后一个),并返回该数据
应用:
a = ['hello', 'world', 'python']
print(a.pop()) # 不写下标,默认删除最后一个,并将其作为返回值
print(a)
print(a.pop(0))
print(a) # 下标为0,所以删除第一个数据,并将其作为返回值
remove():移除列表中某个数据的第一匹配项
语法:
列表序列.remove(数据)
应用:
a = ['hello', 'world', 'python', 'world']
a.remove('world')
print(a) # 结果:['hello', 'python', 'world'],删除第一匹配项,所以第一个world被删除,第二个没有
clear():清空列表
应用:
a = ['hello', 'world', 'python', 'world']
a.clear()
print(a)
结果:
注意:
clear会清除列表,但会保留空列表
4.列表操作之修改修改指定下标数据
应用:
a = ['hello', 'world', 'python']
a[0] = '1'
print(a)
结果:
逆置:reverse()
应用:
a = ['hello', 'world', 'python']
a.reverse()
print(a)
结果:
排序:sort()
语法:
列表序列.sort(key = None, reverse = False)
应用:
a = [1, 5, 3, 4, 2]
a.sort()
print(a) # 结果:[1, 2, 3, 4, 5],默认为升序
a.sort(reverse=True)
print(a)
结果:
注意:
1.括号中的key= None可先忽略,与字典相关
2.reverse表示排序规则,reverse = True 降序,reverse = False 升序(默认)
二.列表复制数据函数:
copy():复制
应用:
a = [1, 5, 3, 4, 2]
b = a.copy()
print(a)
print(b)
结果:
应用:
a = [1, 5, 3]
i = 0
while i < len(a):
print(a[i])
i += 1
结果:
应用:
a = [1, 5, 3]
for i in a:
print(i)
结果:
列表嵌套:一个列表里面包含了其他的子列表
应用:
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(a[0])
print(a[0][1])
结果:
题目:
将8名老师随机分到三个办公室,并打印每个办公室每个老师的姓名
答案样例:(老师为随机分配,答案不唯一)
思考题代码:
import random # 随机数
teachers = [1, 2, 3, 4, 5, 6, 7, 8] # 代表8个老师
offices = [[], [], []] # 代表3个办公室
for name in teachers: # 遍历每个老师的姓名
offices[random.randint(0, 2)].append(name) # 将产生的随机数作为offices的下标(也就是随机选取一个办公室),再把每个老师的名字追加到随机办公室中
j = 1 # 办公室编号
for office in offices: # 用一个嵌套for循环,遍历每个办公室中的所有老师并输出
print(f'办公室{j}有{len(office)}名老师,姓名为:') # 第一个for是遍历每个办公室,第二个for是遍历办公室中每个老师
for i in office:
print(i)
j += 1 # j自增,从而改变办公室的编号