文件内容:
101,小张,88
102,小王,77
103,小李,99
104,小赵,66
105,小强,55
def compute_score():
scores=[] #定义空列表保存后面的分数
with open('1.txt',encoding='utf8') as f: #打开文件,注意字符编码问题,如果中文乱码,注意加上encoding='utf8'
for line in f:
line=line[:-1] #由于文件里面有换行,这里把取出的每一行最后的换行符去掉
fields=line.split(',') # 取出的每一行是逗号分隔的,通过split转换成列表
scores.append(int(fields[-1])) # 取出列表里面的最后一个字符转成int然后添加到scores列表中
max_score=max(scores) #借助max函数求出列表最大值
min_score=min(scores) #借助min函数求出列表最小值
avg_score=sum(scores)/len(scores) #求出总分除以总人数,len可以求出列表的长度,长度就是总人数
return max_score,min_score,avg_score #返回
max_score,min_score,avg_score=compute_score() #这里的写法表示列表的解包的方法
print(f"max_score={max_score},min_score={min_score},avg_score={avg_score}") #最后打印出相关值
上面提到了列表的解包的用法,下面补充下python解包的相关知识点:
列表的解包(unpacking)在Python中是一种非常实用的特性,它允许你将列表(或其他可迭代对象)中的元素分配给多个变量。以下是对列表解包的详细解释和示例:
一、基本解包
假设你有一个包含多个元素的列表,你可以将这些元素分别赋值给相同数量的变量。
lst = [1, 2, 3]
a, b, c = lst
print(a, b, c) # 输出: 1 2 3
在这个例子中,列表lst中的元素被分别解包并赋值给了变量a、b和c。
二、解包到变量并忽略某些元素
如果你只对列表中的某些元素感兴趣,可以使用下划线_(通常用作忽略的变量的约定俗成的名称)来忽略其他元素。
lst = [1, 2, 3, 4]
a, b, _, d = lst
print(a, b, d) # 输出: 1 2 4
三、解包到嵌套变量
如果列表中包含元组或其他可迭代对象,并且每个可迭代对象都有多个元素,你可以将它们解包到嵌套的变量中。
lst = [(1, 'a'), (2, 'b'), (3, 'c')]
a, b_tuple = lst[0] # 或者 a, b = lst[0]
print(a, b_tuple) # 输出: 1 ('a',) 或者使用 a, b 形式则输出 1 a
# 直接解包到两个变量
a1, b1 = lst[0]
print(a1, b1) # 输出: 1 a
四、使用*解包到剩余的元素
你还可以使用*运算符来捕获列表中的剩余元素,并将它们存储在一个新的列表中。
lst = [1, 2, 3, 4, 5]
a, *rest = lst
print(a, rest) # 输出: 1 [2, 3, 4, 5]
在这个例子中,变量a接收了列表的第一个元素,而rest列表接收了剩余的所有元素。
五、在函数参数中使用解包
你还可以在函数参数中使用解包来传递多个参数。
def func(a, b, c):
print(a, b, c)
lst = [1, 2, 3]
func(*lst) # 输出: 1 2 3
在这个例子中,列表lst被解包成三个单独的参数,并传递给函数func。
总结
列表解包是Python中一个非常有用的特性,它允许你以简洁的方式将列表中的元素分配给多个变量。通过掌握这一特性,你可以编写出更加清晰和高效的代码。