列表的嵌套
嵌套的列表可以用来表示表格或数学上的矩阵,例如:我们想保存5个学生3门课程的成绩,可以定义一个保存5个元素的列表保存5个学生的信息,而每个列表元素又是3个元素构成的列表,分别代表3门课程的成绩 。
import random
names=['关羽','张飞','赵云','马超','黄忠']
courses=['语文','数学','英语']
# 列表的生成式
scores=[[random.randrange(50,101) for _ in range(3)] for _ in range(5)]
# 利用循环遍历列表
for i,name in enumerate(names):
for j,course in enumerate(courses):
# 格式化输出
print(f'{name}的{course}成绩:{scores[i][j]}')
# 另外,还可以计算学生的平均成绩和每门课程的最高最低分
# 统计每个学生的平均成绩
for i,name in enumerate(names):
# print(scores[i]) 取到每个同学的三门课程
print(f'{name}平均成绩:{sum(scores[i])/len(courses):.1f}')
# 统计每门课的最低分和最高分
for j,course in enumerate(courses):
temp=[scores[i][j] for i in range(len(names))]
print(f'{course}的最高分:{max(temp)}')
print(f'{course}的低高分:{min(temp)}')
元组
元组的定义
在Python中,元组也是多个元素按照一定的顺序构成的序列。不同于列表,元组是不可变的容器类型,也就是说,元组类型的变量一旦定义,其中的元素不能再添加或删除,而且元素的值也不能进行修改。定义元组通常使用()
字面量语法,也建议大家使用这种方式来创建元组。
fruits1=('apple','banana','orange')
print(type(fruits1)) # <class 'tuple'>
fruits=('apple')
print(type(fruits)) # <class 'str'>
# 一元组必须有逗号
fruits=('apple',)
print(type(fruits)) # <class 'tuple'>
元组的使用
# 重复运算
print(fruits*3) # ('apple', 'apple', 'apple')
# 成员运算
print('apple' in fruits1) # True
print('banana' not in fruits1) # False
# 合并运算
fruits2=('grape','litchi')
fruits3=fruits1+fruits2
print(fruits3) # ('apple', 'banana', 'orange', 'grape', 'litchi')
# 切片和索引
print(fruits3[4],fruits3[-1]) # litchi litchi
print(fruits3[::-1]) # ('litchi', 'grape', 'orange', 'banana', 'apple')
print(fruits3.index('apple')) # 0
print(fruits3.count('apple')) # 1
元组的应用
当我们把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型;当我们把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量,如下面的代码所示。
# 打包
a = 1, 10, 100
print(type(a), a) # <class 'tuple'> (1, 10, 100)
# 解包
i, j, k = a
print(i, j, k) # 1 10 100
有一种解决变量个数少于元素的个数方法,就是使用星号表达式,我们之前讲函数的可变参数时使用过星号表达式。
a, b, *c = 5, 10, 15, 20, 25
print(a) # 5
print(b) # 10
print(c) # [15,20,25]