目录
题目2.从范围1-200之间随机生成10个数字添加进列表,并进行索引查找最前和最后一位的数字
题目3.定义一个列表的值,求该列表中最大的值,最小值,以及平均值(保留两位小数)
一.数据容器概念
- 数据容器含义: 能够存储多个元素的数据类型,叫数据容器
- 常见的数据容器: 列表(list) 元组(tuple) 字符串(str) 集合(set) 字典(dict)
- 各个容器符号
- 列表list: 中括号 [] 举例: [元素1,元素2,元素3,...]
- 元组tuple: 小括号 () 举例: (元素1,元素2,元素3,...)
- 字符串str: 引号 '内容'/"内容"/'''内容'''/"""内容""" 注意: 在字符串中每个字符都是一个元素
- 集合set: 大括号 {} 举例: {元素1,元素2,元素3,...}
- 字典dict: 大括号 {} 举例: {key:value , key:value ,...} 注意: 每个键值对是一个元素
二.方法与函数对比
# 生成随机数
# 自己不会写这个功能,而且python已经提供了,拿过来用
import random
num = random.randint(1, 10)
print(num)
- 方法: 本质是一个函数,只是这个函数放到class xxx 类中,上述random中的randint本质是一个函数,一般称之为方法
# 定义一个计算两个数和的函数
def get_sum(a, b):
return a + b
he = get_sum(1, 10)
print(he)
- 函数:上述自定义的get_sum就是一个函数
三.数据容器之列表
列表(list)类型,是数据容器的一类,列表一次可以存储多个数据
列表的特点:
- 可以容纳多个数据(上线为2**63-1,9223372036854775807个)
- 可以容纳不同类型的数据,均被定义为字符串类型
- 数据是有序存储的,有下标序号
- 允许重复数据存在
- 可以进行修改
列表内的每一个数据,称之为元素 以 [ ] 作为标识 列表内每一个元素之间用, 逗号隔开
基本语法:
'''
字面量
[元素1,元素2,元素3,元素4,....]
定义变量
变量名称 = [元素1,元素2,元素3,元素4,....]
定义空列表
变量名称 = []
变量名称 = list()
'''
name_list = ['白', '黑', '黄']
print(name_list)
print(type(name_list))
'''
输出结果
['白', '黑', '黄']
<class 'list'>
'''
四.列表的下标索引
1.正向索引
- 下标索引: 列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增 我们只需要按照下标索引,即可取得对应位置的元素。
- 正索引: 从0开始,从左到右,依次递增
2.反向索引
- 负索引: 从-1开始,从右到左,依次递减
- 根据下标索引查找对应元素格式: 列表名[索引]
my_list = ['黑', '666', 'True', 'king'] # 列表可以存储多种数据,均被定义为字符串类型
print(my_list)
print(type(my_list[0]), my_list[0]) # 查找列表元素第一个
print(type(my_list[1]), my_list[1]) # 查找列表元素第二个
print(type(my_list[2]), my_list[2]) # 查找列表元素第三个
print(type(my_list[-1]), my_list[-1]) # 查找列表元素倒数第一个
'''
输出结果:
['黑', '666', 'True', 'king']
<class 'str'> 黑
<class 'str'> 666
<class 'str'> True
<class 'str'> king
'''
3.列表嵌套的索引
# 嵌套列表索引
b_list = [[1, 2, 3], [4, 5, 6]] # 列表嵌套
print(b_list[0]) # 结果为1,2,3
print(b_list[0][0]) # 结果为1,2,3中的1
name_list = ['白', '黑', '黄']
my_list = ['黑', '666', 'True', 'king']
all_list = [name_list, my_list]
print(f'all_list组合列表中的第0位的是name_list列表,'
f'他的列表中的元素有{all_list[0]}')
print(f'all_list组合列表中的第1位是my_list列表,'
f'他的列表中的元素有{all_list[1]}')
print(f'black的中文是{all_list[1][0]},'
f'white的中文是{all_list[0][-3]}')
'''
输出结果:
all_list组合列表中的第0位的是name_list列表,他的列表中的元素有['白', '黑', '黄']
all_list组合列表中的第1位是my_list列表,他的列表中的元素有['黑', '666', 'True', 'king']
black的中文是黑,white的中文是白
'''
五.列表的增删改查
列表除了可以:
- 定义
- 使用下标索引获取值
以外,列表也提供了一系列功能: 插入元素 删除元素 清空列表 修改元素 统计元素个数 等等功能,这些功能我们都称之为:列表的方法
增:添加元素
- 列表名.append(元素): 把指定元素追加到列表中
- 列表名.extend(容器): 把指定容器中每个元素取出,依次放到当前列表中
- 列表名.insert(索引,元素): 把指定元素插入到列表指定索引位置
'''
列表的添加功能
insert:在指定下标处,插入指定的元素
append:向列表追加一个元素
extend:将数据容器的内容一次取出,追加的列表尾部
'''
null_list = [] # 创建一个空列表
null_list.append('张三') # 插入一个元素
null_list.append('李四')
print(null_list) # ['张三', '李四']
null_list.extend(['王五', '赵六', '田七']) # 依次各个插入
print(null_list) # ['张三', '李四', '王五', '赵六', '田七']
null_list.insert(0, '老一') # 按索引位置来插入元素,0为最前面
print(null_list) # ['老一', '张三', '李四', '王五', '赵六', '田七']
查:查找元素
- 列表名[索引]: 查找指定索引位置上的元素
- 列表名.count(元素): 查找指定元素在列表中出现的次数
- 列表名.index(元素): 查找指定元素在列表中的索引位置 注意: 如果不存在就报错
- len(列表名): 查询当前列表中所有元素的总个数
'''
列表的查询功能
[索引数字]查询在此索引位置上的数据,0第一,-1最后
len:统计容器内有多少元素
count():统计此元素在列表中出现的次数
index():查找指定元素在列表的下标,找不到会报错
'''
# 接着之前的列表进行操作['老一', '张三', '李四', '王五', '赵六', '田七']
print(null_list[0]) # 查找列表最前面的元素,老一
print(null_list[-1]) # 查表列表倒数第一位元素,田七
print(len(null_list)) # 统计列表中总共有多少元素,6个
print(null_list.count('张三')) # 统计指定的元素在列表中出现的次数,张三共出现1此
print(null_list.index('赵六')) # 查找指定元素在列表中的第几位,赵六在从0开始的第4位
改:修改元素
- 列表名[索引] = 新元素
'''
列表的修改功能
[索引下标数字]='' ,在对应索引位置直接更改元素
'''
# 接着之前的列表进行操作 ['老一', '张三', '李四', '王五', '赵六', '田七']
null_list[-1] = '老八' # 把倒数第一位变成'老八'
print(null_list[-1]) # 更改成功后显示最后一位已变为'老八'
print(null_list) # 原本的田七变成了老八,最终列表变为
# ['老一', '张三', '李四', '王五', '赵六', '老八']
删:删除元素
- del 列表名[索引]: 把指定索引位置的元素删除
- 列表名.pop(索引): 把指定索引位置的元素删除
- 列表名.remove(元素): 把指定元素直接删除
- 列表名.clear() : 清空当前列表
- del 列表名: 删除当前列表
'''
列表的删除
del [索引位置],删除索引位置上的数字
pop [索引位置],删除索引位置上的数字
remove:删除指定[元素名]
clear:清空列表中所有元素
del 列表名:删除这个列表
'''
# 接着之前的列表进行操作['老一', '张三', '李四', '王五', '赵六', '老八']
del null_list[1] # 删除索引位置第二位,也就是张三被干掉
print(null_list) # 列表结果['老一', '李四', '王五', '赵六', '老八']
null_list.pop(-1) # 删除索引位置倒数第一位,老八被干掉
print(null_list) # 列表结果['老一', '李四', '王五', '赵六']
null_list.remove('王五') # 已知元素名的时候,直接删除该元素,王五被干掉
print(null_list) # 列表结果['老一', '李四', '赵六']
null_list.clear() # 直接清空列表内所有元素,变成空列表
print(null_list) # 列表结果[]
del null_list # 删除该列表
print(null_list) # 因为列表已被删除,无法进行操作,报错
六.使用循环来遍历列表
- 什么是遍历?将容器内的元素依次取出,并处理,称之为遍历操作
1.for循环遍历
for 元素名 in 列表:
操作元素
# for,直接遍历列表
name_list = ['老大', '老二', '老三', '老四', '老五']
for i in name_list: # 将列表中每个元素依次单独提取出来
print(i)
'''
老大
老二
老三
老四
老五
'''
2.while循环遍历
核心思想: 利用while变量作为列表的索引使用
index = 0
while index < len(列表):
元素名 = 列表[index]
操作元素
index+=1
name_list = ['老大', '老二', '老三', '老四', '老五']
# while,利用while中变量作为列表的索引使用
i = 0
while i < 5: # 设置循环结束条件,循环的次数不超过列表元素数量
# 根据索引去列表中找到对应元素打印
x = name_list[i] # x=列表[元素索引下标],
# 第0次循环 x=name_list[0],x=老大
# 第1次循环 x=name_list[1],x=老二
# 第2次循环 x=name_list[2],x=老三
# 第3次循环 x=name_list[3],x=老四
# 第4次循环 x=name_list[4],x=老五
i += 1 # i=i+1 每次循环就加一
print(x)
'''
老大
老二
老三
老四
老五
'''
3.对比
while循环和for循环,都是循环语句,但细节不同:
- 在循环控制上:
while循环可以自定循环条件,并自行控制
for循环不可以自定循环条件,只可以一个个从容器内取出数据
- 在无限循环上:
while循环可以通过条件控制做到无限循环
for循环理论上不可以,因为被遍历的容器容量不是无限的
- 在使用场景上:
for循环更简单,while循环更灵活
while循环适用于任何想要循环的场景
for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
七.综合练习题目
题目1.将列表中的重复元素去除,并打印
ls = [1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1, 0]
ls_2 = [] # 创建一个空列表,接收去重后的元素
for i in ls:
if i not in ls_2: # 如果ls2里没有ls1的元素
ls_2.append(i) # 则向ls2列表里追加i遍历出的元素
# 当ls2列表已经有了某个元素,就不添加已有的元素,做到了去重
print(f'去重后的列表为{ls_2}')
题目2.从范围1-200之间随机生成10个数字添加进列表,并进行索引查找最前和最后一位的数字
import random # 导包
list1 = [] # 定义一个空列表接收生成的数
for i in range(10): # 设置循环次数范围,10次
num = random.randint(1, 200) # 生成1-200之间的随机数,存进变量num
list1.append(num) # 将变量num里的值添加到list1列表,此操作循环10次
print(f'在列表中添加的随机数为{list1},元素数量为{len(list1)},'
f'列表中第0位元素是{list1[0]},列表最后一位元素数字是{list1[-1]}')
题目3.定义一个列表的值,求该列表中最大的值,最小值,以及平均值(保留两位小数)
list2 = [4, 3, 2, 1, 5, 7, 2, 5, 5, 31, 8, 6, 2]
print(list2)
biggest = max(list2)
smallest = min(list2)
average = sum(list2) / len(list2) # 列表中所有数值的和,再除以元素的个数就是平均值
print(f'最大值是{biggest}')
print(f'最小值是{smallest}')
print('平均值是%.2f' % average)