--此系列主要记录一些本人作为一个小白在python学习上遇到的一些重要知识点和易错点的总结,开坑,希望能够坚持到学有所成。
day03:数据容器01(列表)
一·定义格式以及特点
核心内容:
# 1.定义空列表
list1 = []
print(list1)
# 注意: 可以使用类型()方式定义空列表
list2 = list()
print(list2)
# 2.定义非空列表
list3 = ['张三', '李四', '王五', '赵六']
print(list3)
# 注意: 列表可以存储不同类型数据,但是不建议
list4 = ['张三', 10, 3.14, True, None]
print(list4)
# 定义嵌套列表
big_list = [list1, list2, list3, list4]
print(big_list)
意义:作为存储多个元素的python类型容器的其中之一
特点:可以容纳多个元素
是否可以混装: 可以容纳不同类型的元素(混装)
是否有下标索引: 数据是有序存储的(有下标序号)
是否允许重复数据: 允许重复数据存在
是否支持元素修改操作: 支持修改(增加或删除元素等)
二·列表的下标索引
核心内容: 下标索引: 本质就是每个元素对应的编号,但是需要注意的是有两套索引
正索引: 从前到后,从0开始,依次递增
负索引: 从后到前,从-1开始,依次递减
根据索引找元素: 列表名[索引下标]
列表中最大索引: len(列表)-1
易错点:
如果访问了不存在的索引就会报: 索引越界异常(IndexError: list index out of range)
图解:
示例:
# 需求1: 定义一个列表,存储'张三','李四','王五','赵六'
name_list = ['张三', '李四', '王五', '赵六']
print(name_list)
# 需求2: 查找并打印出第一个元素
# 方式1:正索引(建议)
name = name_list[0]
print(name)
# 方式2: 负索引
name = name_list[-4]
print(name)
# 需求3: 查找并打印出第最后一个元素
# 方式1:正索引
print(name_list[3])
# 方式2: 负索引(建议)
print(name_list[-1])
三·列表的嵌套
核心内容:
# 定义两个列表,分别存储姓名和年龄
name_list = ['张三', '李四', '王五']
age_list = [18, 28, 38]
# info嵌套两个小列表
info = [name_list, age_list]
print(info)
四·列表的增删查改
增加操作:
核心内容:
添加一个元素到列表末尾: 列表名.append(元素)
添加多个元素多列表末尾: 列表名.extend(容器)
在指定位置插入指定元素: 列表名.insert(索引位置,元素)
示例:
# 1.定义空列表
name_list = []
# 2.使用append分别添加张三,李四到列表中
name_list.append('张三')
name_list.append('李四')
print(name_list)
# 3.使用extend一次性添加多个元素到列表中
name_list.extend(['王五', '赵六'])
print(name_list)
# 4.使用insert插入数据到指定位置
name_list.insert(0, '老大')
print(name_list)
删除操作:
核心内容:
根据索引删除对应位置上的元素: 列表名.pop(索引) 或者 del 列表名[索引下标]
直接删除指定元素: 列表名.remove(元素)
清空列表所有元素: 列表名.clear()
示例:
# 1.定义非空列表
name_list = ['老大', '张三', '李四', '王五', '赵六']
print(name_list)
# 2.删除第一个元素
name_list.pop(0)
print(name_list)
# 3.删除最后一个元素
del name_list[-1]
print(name_list)
# 4.删除'王五'元素
name_list.remove('王五')
print(name_list)
# 5.清空列表
name_list.clear()
print(name_list)
查询操作:
核心内容:
根据索引查询指定位置上的元素: 列表名[索引下标]
查询列表中元素的总个数: length = len(列表名)
查询指定元素出现的次数: count = 列表名.count(元素) 注意: 查找的元素如果不存在就返回0
查询指定元素的索引位置: index = 列表名.index(元素) 注意: 如果查找的元素不存在就报错: ValueError: 60 is not in list
示例:
# 已知列表存储了10,20,30,40,50按照以下需求分别做下查询操作
# 需求1: 定义列表存储10,20,30,40,50
num_list = [10, 20, 30, 40, 50, 10, 10, 30, 10]
print(num_list)
# 需求2: 查询列表中元素的个数
size = len(num_list)
print(f'列表中一共有{size}个元素')
# 需求3: 查询10这个元素出现了几次
count = num_list.count(10)
print(f'10这个元素一共出现了{count}次')
# 需求4: 查询30这个元素的索引位置
index = num_list.index(30)
print(f'30这个元素的索引位置是:{index}')
修改操作:
核心内容:根据索引修改指定位置上的元素: 列表名[索引下标] = 新值
示例:
# 1.定义列表存储张三,李四,王五
name_list = ["张三", "李四", "王五"]
print(name_list)
# 2.把李四修改成赵六
name_list[1] = '赵六'
print(name_list)
# 需求2: 已知大列表中存储了姓名列表
big_list = [['张三', '赵六', '周七'], [18, 28, 38]]
print(big_list)
# 把王五改成周七
big_list[0][2] = '周七'
print(big_list)
五·列表的其他操作
核心内容:
把列表中元素升序排序: 列表名.sort()
把列表中元素反转存储: 列表名.reverse()
复制列表元素到新列表: 新列表名 = 列表名.copy()
示例:
# 已知列表存储了10,20,30,40,50按照以下需求分别做下查询操作
# 需求1: 定义列表存储10,20,30,40,50
num_list = [50, 20, 30, 10, 40]
print(num_list)
# 需求2: 把列表中元素进行升序排序
num_list.sort()
print(num_list)
# 需求3: 把列表中元素反转(如果先sort升序,反转类似于倒序)
num_list.reverse()
print(num_list)
# 需求4: 复制列表到新的列表中
new_list = num_list.copy()
print(num_list)
print(new_list)
六·列表的遍历
核心内容:通过两种循环操作将列表中的元素按照顺序提取出来。
示例:
name_list = ["张三", "李四", "王五"]
# for循环遍历
for i in name_list:
print(i)
# while循环遍历
# 条件变量
i = 0
# 循环条件 小于列表长度
while i <= len(name_list) - 1:
#循环体
print(name_list[i])
#控制条件
i += 1