一、列表
1. 列表格式
列表可以一次性存储多个数据,且可以为不同的数据类型,常用增、删、改、查操作
[数据1,数据2,数据3,数据4,…]
2. 下标
name_list = ["张飞", "刘备", "关羽"]
print(name_list[0])
3. 列表查找函数
- index() :返回指定数据所在位置的下标。
列表序列.index(数据, 开始位置下标, 结束位置下标)
name_list = ["张飞", "刘备", "关羽"]
print(name_list.index("张飞")) # 0
注意:如果查找的数据不存在,会报错
- count() : 统计指定数据在当前列表中出现的次数。
- len() :访问列表长度,即列表中数据的个数。
4. 列表判断是否存在
- in :判断指定数据在某个列表序列,如果在返回 True,否则返回 False
name_list = ["张飞", "刘备", "关羽"]
b = "张飞" in name_list
print(b) # True
print("赵云" in name_list) # False
- not in :判断指定数据不在某个列表序列,如果不在返回True,否则返回False
5. 列表增加数据
- append() :列表结尾追加数据
列表序列.append(数据)
name_list = ["张飞", "刘备", "关羽"]
name_list.append("赵云")
print(name_list) # ['张飞', '刘备', '关羽', '赵云']
注意:列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据
如果 append() 追加的数据是一个序列,则追加整个序列到列表
name_list = ["张飞", "刘备", "关羽"]
name_list.append(["赵云", "马超"])
print(name_list) # ['张飞', '刘备', '关羽', ['赵云', '马超']]
- extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。
列表序列.extend(数据)
- 添加单个数据
name_list = ["张飞", "刘备", "关羽"]
name_list.extend("赵云")
print(name_list) # ['张飞', '刘备', '关羽', '赵', '云']
- 添加序列数据
name_list = ["张飞", "刘备", "关羽"]
name_list.extend(["赵云", "马超"])
print(name_list) # ['张飞', '刘备', '关羽', '赵云', '马超']
- insert():指定位置新增数据
列表序列.insert(位置下标, 数据)
name_list = ["张飞", "刘备", "关羽"]
name_list.insert(1, ["赵云", "马超"])
print(name_list) # ['张飞', ['赵云', '马超'], '刘备', '关羽']
6. 列表删除数据
- del 目标
- 删除整个列表
name_list = ["张飞", "刘备", "关羽"]
del name_list
print(name_list) # 会报错,未定义
- 删除指定数据
name_list = ["张飞", "刘备", "关羽"]
del name_list[0]
print(name_list) # ['刘备', '关羽']
- pop() :删除指定下标的数据(默认为最后一个),并返回该数据。
列表序列.pop(下标)
name_list = ["张飞", "刘备", "关羽"]
print(name_list.pop()) # 关羽
- remove():移除列表中某个数据的第一个匹配项
列表序列.remove(数据)
name_list = ["张飞", "刘备", "关羽"]
name_list.remove("张飞")
print(name_list) # ['刘备', '关羽']
- clear() :清空列表
name_list = ["张飞", "刘备", "关羽"]
name_list.clear()
print(name_list) # []
7.列表修改数据
- 修改指定下标数据
name_list = ["张飞", "刘备", "关羽"]
name_list[0] = "赵云"
print(name_list) # ['赵云', '刘备', '关羽']
- 逆置:reverse()
name_list = ["张飞", "刘备", "关羽"]
name_list.reverse()
print(name_list) # ['关羽', '刘备', '张飞']
- 排序:sort()
列表序列.sort(key=None, reverse=False)
注意:reverse表示排序规则,reverse=True降序,reverse=False升序(默认)
name_list = [1, 5, 7, 9, 4, 3]
name_list.sort()
print(name_list) # [1, 3, 4, 5, 7, 9]
8.列表复制
- 函数:copy()
name_list = [1, 5, 7, 9, 4, 3]
name = name_list.copy()
print(name) # [1, 5, 7, 9, 4, 3]
9.列表遍历
- while循环遍历
name_list = ["张飞", "刘备", "关羽"]
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
- for循环遍历
name_list = ["张飞", "刘备", "关羽"]
for i in name_list:
print(i)
10. 列表嵌套
所谓的列表嵌套指的就是一个列表里面包含了其他的子列表
应用场景:要存储班级一、二、三三个班级学生姓名,且每个班级的学生姓名在一个列表
name_list = [["张飞", "关羽", "刘备"], ["周瑜", "吕蒙", "孙策"], ["典韦", "许褚", "郭嘉"]]
如何查找数据 “典韦”?
name_list = [["张飞", "关羽", "刘备"], ["周瑜", "吕蒙", "孙策"], ["典韦", "许褚", "郭嘉"]]
for i in name_list:
if "许褚" in i:
print(i.index("许褚")) # 打印典韦所在字列表的索引
import random
teacher = ["A", "B", "C", "D", "E", "F", "G", "H"]
office = [[], [], []]
for name in teacher:
num = random.randint(0, 2)
office[num].append(name)
i = 1
for off in office:
print(f"办公室{i}的人数是{len(off)}, 老师分别是:", end="")
for name in off:
print(name, end="")
print()
i += 1
# 办公室1的人数是3, 老师分别是:DFG
# 办公室2的人数是0, 老师分别是:
# 办公室3的人数是5, 老师分别是:ABCEH
二、元组
一个元组可以存储多个数据,元组内的数据是不能修改的,列表是可以修改的
1. 定义元组
# 多个数据元组
t1 = (10,20,30)
# 单个数据元组
t2 = (10,)
注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型
t1 = (10,)
print(type(t1)) # tuple
t2 = (10)
print(type(t2)) # int
t3 = ("张飞")
print(type(t3)) # str
2. 元组查找
元组数据不支持修改,只支持查找
- 按下标查找数据
tuple1 = ("张飞", "关羽", "刘备")
print(tuple1[0]) # 张飞
- index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同。
tuple1 = ("张飞", "关羽", "刘备")
print(tuple1.index("张飞")) # 0
- count():统计某个数据在当前元组出现的次数。
tuple1 = ("张飞", "关羽", "刘备", "张飞")
print(tuple1.count("张飞")) # 2
- len() : 统计元组中数据的个数
tuple1 = ("张飞", "关羽", "刘备")
print(len(tuple1)) # 3
3.元组数据修改
- 元组内的直接数据如果修改则立即报错
tuple1 = ("张飞", "关羽", "刘备")
tuple1[0] = "赵云" # 会报错
- 如果元组里面有列表,修改列表里面的数据是支持的,所以自觉很重要
tuple1 = ("张飞", "关羽", "刘备", ["周瑜", "孙权"])
tuple1[3][0] = "孙策"
print(tuple1) # ('张飞', '关羽', '刘备', ['孙策', '孙权'])
持续更新中。。。
下一节:Python字典和集合