学习数据容器,就是为了批量存储或批量使用多份数据
1.数据容器
数据容器含义: 能够存储多个元素的数据类型,叫数据容器 常见的数据容器: 列表(list) 元组(tuple) 字符串(str) 集合(set) 字典(dict) 各个容器符号 列表: 中括号 [] 举例: [元素1,元素2,元素3,...] 元组: 小括号 () 举例: (元素1,元素2,元素3,...) 字符串: 引号 '内容'/"内容"/'''内容'''/"""内容""" 注意: 在字符串中每个字符都是一个元素 集合: 大括号 {} 举例: {元素1,元素2,元素3,...} 字典: 大括号 {} 举例: {key:value , key:value ,...} 注意: 每个键值对是一个元素
2. 方法和函数对比
方法:
本质是一个函数,只是这个函数放到class xxx 类中
注意:
可以说方法一定是一个函数,但是不能说函数一定是一个方法
示例:
# 生成随机数 # 自己不会写这个功能,而且python已经提供了,拿过来用 import random num = random.randint(1, 10) print(num) # 定义一个计算两个数和的函数 def get_sum(a, b): return a + b he = get_sum(1, 10) print(he) """ 方法: 本质是一个函数,只是这个函数放到class xxx 类中 上述random中的randint本质是一个函数,一般称之为方法 自己写的get_sum就是一个函数 """
3.列表的定义
空列表: 列表名=[] 或者 列表名=list() 非空列表: 列表名=[元素1,元素2,元素3,...] 列表支持嵌套
示例:
# 定义空列表 list1 = [] print(list1) list2 = list() print(list2) # 定义非空列表 list3 = ['a', 'b', 'c'] print(list3) # 列表的嵌套 class1_list = ['张三', '李四', '王五'] print(class1_list) class2_list = ['赵六', '田七', '周八'] print(class2_list) school_list = [class1_list, class2_list] print(school_list)
4.列表的下标索引
下标索引: 就是咱们说的编号,也就是容器中每个元素的编号 正索引: 从0开始,从左到右,依次递增 负索引: 从-1开始,从右到左,依次递减 根据下标索引查找对应元素格式: 列表名[索引]
示例:
# 下标索引: 就是列表中每个元素的编号 # 需求1: 定义列表存储5个学生姓名 name_list = ['张三', '李四', '王五', '赵六', '田七'] # 需求2:查找第一个列表中第一个姓名 name = name_list[0] print(name) # 当然也可以使用负索引查找 print(name_list[-5]) # 需求3: 查找最后一个姓名 print(name_list[-1]) # 当然也可以使用正索引查找 print(name_list[4]) # 注意: 因为正索引从0开始数,有时候很容易数错,如果访问了不存在的索引就会包索引越界异常 # print(name_list[5]) # IndexError: list index out of range # 需求4: 查找索引为2位置的姓名 print(name_list[2])
5.列表的增删改查
增:添加元素 列表名.append(元素): 把指定元素追加到列表中 列表名.extend(容器): 把指定容器中每个元素取出,依次放到当前列表中 列表名.insert(索引,元素): 把指定元素插入到列表指定索引位置 删:删除元素 del 列表名[索引]: 把指定索引位置的元素删除 列表名.pop(索引): 把指定索引位置的元素删除 列表名.remove(元素): 把指定元素直接删除 列表名.clear() : 清空当前列表 del 列表名: 删除当前列表 改:修改元素 列表名[索引] = 新元素 查:查找元素 列表名[索引]: 查找指定索引位置上的元素 列表名.count(元素): 查找指定元素在列表中出现的次数 列表名.index(元素): 查找指定元素在列表中的索引位置 注意: 如果不存在就报错 len(列表名): 查询当前列表中所有元素的总个数
示例:
""" 因为方法名都是见名知意的,所以建议同学们记重点单词 添加元素相关单词: append:附加 extend:扩展 insert:插入 查询元素相关单词: count: 计数 index: 索引 length: 长度 删除元素相关单词 delete:删除 pop : 弹出 remove:移除 clear: 清空 """ # 1.演示添加功能 # 需求:已知空列表,要求使用三种方式添加元素到列表中 name_list = [] # 需求:依次添加'张三','李四'到列表中 name_list.append('张三') name_list.append('张三') name_list.append('李四') print(name_list) # 需求: 一次性添加'王五','赵六','田七'到列表中 name_list.extend(['王五', '赵六', '田七']) print(name_list) # 需求: 把'周八'直接插入到第一个位置 name_list.insert(0, '周八') print(name_list) # 2.演示查询功能 # 需求: 查询'张三'在列表中个数 print(name_list.count('张三')) # 需求: 查询'周八'的索引 print(name_list.index('周八')) # 注意: index方法如果查询的元素不存在会报错 # print(name_list.index('周一'))# ValueError: '周一' is not in list # 需求: 查询列表中元素个数 print(len(name_list)) # 需求: 查询最后元素内容 print(name_list[-1]) # 3.演示修改功能 # 需求: 修改最后元素内容为'钱九' name_list[-1] = '钱九' # 再次查看最后一个元素内容 print(name_list[-1]) # 4.演示删除功能 # 删除第一个元素 del name_list[0] print(name_list) # 删除最后一个元素 name_list.pop(-1) print(name_list) # 删除张三这个元素 name_list.remove('张三') print(name_list) # 清空列表中所有元素 name_list.clear() print(name_list) # 删除name_list这个列表 del name_list print(name_list) # 报错说明删除成功,NameError: name 'name_list' is not defined
6.列表的遍历
1.for循环遍历 for 元素名 in 列表: 操作元素 2.while循环遍历 核心思想: 利用while变量作为列表的索引使用 index = 0 while index < len(列表): 元素名 = 列表[index] 操作元素 index+=1 3.对比 while循环和for循环,都是循环语句,但细节不同: 在循环控制上: while循环可以自定循环条件,并自行控制 for循环不可以自定循环条件,只可以一个个从容器内取出数据 在无限循环上: while循环可以通过条件控制做到无限循环 for循环理论上不可以,因为被遍历的容器容量不是无限的 在使用场景上: while循环适用于任何想要循环的场景 for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
示例:
# 分别使用while循环和for循环遍历列表 # 定义非空列表 name_list = ['张三', '李四', '王五'] # while循环遍历(前提该容器要有索引) # 核心思想: 利用while中变量作为列表的索引使用 # 1.定义初始变量 index = 0 # 2.条件判断 while index < 3: # 3.循环体 # 根据索引去列表中找对应的元素并打印 element = name_list[index] print(element) # 4.条件控制 index += 1 # for循环遍历 for element in name_list: print(element)