查找函数
list = ['python', 'java', 'go', 'shell']
1、index() ---返回指定数据所在位置的下标,如果数据不存在则报错
语法:列表序列.index(数据,开始位置下标,结束位置下标)
print(list.index('go', 0,3))
执行结果:2
2、count() ---统计指定数据在当前列表中出现的次数
print(list.count('python'))
执行结果:1
3、len() ---访问列表长度,即列表中数据的个数
print(len(list))
执行结果:4
判断是否存在
1、in ---判断指定数据在某个列表序列中
print('python' in list)
执行结果:True
2、not in ---判断指定数据不在某个列表序列中
3、案例:注册邮箱,用户输入账号名,判断这个账户存在提示已存在,不在则可注册
name_list = ['Tom', 'Tom1', 'Tom2']
name = input('请输入您的邮箱账号名:')
if name in name_list:
print(f'您输入的邮箱账号名为{name},已存在不可注册')
else:
print(f'您输入的邮箱账号名为{name},可注册')
列表增加数据
1、append() ---列表结尾追加数据
语法:列表序列.append(数据)
list.append('php')
print(list)
执行结果:['python', 'java', 'go', 'shell', 'php']
list.append(['php', 'lua'])
print(list)
执行结果:['python', 'java', 'go', 'shell', ['php', 'lua']]
注意点:
列表为可变数据类型
如果append()追加的数据是一个序列,则追加整个序列到列表
2、extend()
list.extend('php')
print(list)
执行结果:['python', 'java', 'go', 'shell', 'p', 'h', 'p']
list.extend(['php', 'lua'])
print(list)
执行结果:['python', 'java', 'go', 'shell', ['php', 'lua']]
注意点:
extend追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
3、insert() ---指定位置新增数据
语法:列表序列.insert(位置下标,数据)
list.insert(0, 'php')
print(list)
执行结果:['php', 'python', 'java', 'go', 'shell']
list1 = ['python', 'java', 'go', 'shell']
列表删除数据
1、del
语法:del 目标/del(目标)
del(list1)
print(list1)
输出结果:NameError: name 'list1' is not defined
del(list1[1])
print(list1)
输出结果:['python', 'go', 'shell']
2、pop() ---删除指定下标数据(默认为最后一个),并返回该数据
语法:列表序列.pop(下标)
new_list = list1.pop(1)
print(new_list)
print(list1)
输出结果:
java
['python', 'go', 'shell']
3、remove() ---移除列表中某个数据的第一个匹配项(意思是如果有多个移除第一个)
list1.remove('go')
print(list1)
执行结果:['python', 'java', 'shell']
4、clear() ---清空列表
list1.clear()
print(list1)
执行结果:[]
列表修改数据
1、修改指定下标的数据
list1[1] = 'php'
print(list1)
执行结果:['python', 'php', 'go', 'shell']
list2 = [1, 3, 2, 5, 4, 6]
2、reverse() ---逆置排序
list2.reverse()
print(list2)
执行结果:[6, 4, 5, 2, 3, 1]
3、sort()
语法:列表序列.sort(key=None, reverse=False)
注意:reverse表示排序规则,reverse=True降序,reverse=False升序(默认)
list2.sort()
print(list2)
执行结果:[1, 2, 3, 4, 5, 6]
list2.sort(reverse=True)
print(list2)
执行结果:[6, 5, 4, 3, 2, 1]
复制数据
copy()
list2 = list1.copy()
print(list1)
print(list2)
执行结果:
['python', 'java', 'go', 'shell']
['python', 'java', 'go', 'shell']
列表的循环遍历
name_list = ['python', 'java', 'go', 'shell']
需求:依次打印列表中的各个数据
1、while
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
执行结果:
python
java
go
shell
2、for
for i in name_list:
print(i)
执行结果:
python
java
go
shell
列表嵌套
所谓列表嵌套指的就是一个列表里包含了其他的子列表
需求:拿到下边列表中的“王麻子”
name_list = [['张三','李四', '王麻子'], ['Tom', 'Tom1', 'Tom2'], ['小明', '小红', '小绿']]
print(name_list[0][2])
执行结果:王麻子
列表的综合案例
需求:将8位老师随机分配到3个办公室
分析:
1、准备好老师和办公室的数据;
2、分配老师到办公室---取每个老师的值到办公室列表---遍历老师列表的数据
3、办公室列表追加数据 append(选中),extend(逐一追加不可取),insert(下标追加,需求是随机追加的)
4、导入随机函数,随机办公室3个所以randint(0, 2)
5、打印几次办公室offices看结果
import random
teachers = ['老师A', '老师B', '老师C', '老师D', '老师E', '老师F', '老师G', '老师H']
offices = [[], [], []]
for t_name in teachers:
num = random.randint(0, 2)
offices[num].append(t_name)
print(offices)
执行结果:[['老师B', '老师E'], ['老师A', '老师C', '老师D', '老师F', '老师G'], ['老师H']]
需求:验证是否正确,贴合生活习惯打印出每个办公室的编号以及分配到的老师
分析:
1、准备办公室编号i
2、格式化输出办公室编号以及人数---即子列表的个数---len()函数,分别是哪些老师
3、办公室编号自增
import random
teachers = ['老师A', '老师B', '老师C', '老师D', '老师E', '老师F', '老师G', '老师H']
offices = [[], [], []]
for t_name in teachers:
num = random.randint(0, 2)
offices[num].append(t_name)
print(offices)
i = 1
for office in offices:
print(f'办公室{i}的人数为{len(office)},老师分别是:')
for t_name in office:
print(t_name)
i += 1
执行结果:
[['老师E'], ['老师A', '老师C', '老师G'], ['老师B', '老师D', '老师F', '老师H']]
办公室1的人数为1,老师分别是:
老师E
办公室2的人数为3,老师分别是:
老师A
老师C
老师G
办公室3的人数为4,老师分别是:
老师B
老师D
老师F
老师H
列表总结
- 列表的格式
[数据1, 数据2, 数据3]
- 常用操作方法
index()
len()
append()
pop()
remove() - 列表嵌套