Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将成绩作为列表返回_Python_List_Anaconda - Fatal编程技术网

Python 如何将成绩作为列表返回

Python 如何将成绩作为列表返回,python,list,anaconda,Python,List,Anaconda,我有一份物品清单。我想计算平均分数并返回分数值 我想比较新的列表值并返回一个列表。有什么简单的方法吗 lst = [[90,80,70,60], [10,81,50, 65]] Lst_New=[] New_list=list(map(lambda x:sum(x)/len(x), lst)) print(New_list) if New_list[0]>90: New_grade='A' elif New_list[0]>=80 and New_list[0]<=

我有一份物品清单。我想计算平均分数并返回分数值

我想比较新的列表值并返回一个列表。有什么简单的方法吗

lst = [[90,80,70,60], [10,81,50, 65]]
Lst_New=[]
New_list=list(map(lambda x:sum(x)/len(x), lst))
print(New_list)


if New_list[0]>90:
    New_grade='A'
elif New_list[0]>=80 and New_list[0]<=90:
    New_grade='B'
elif New_list[0]>=70 and New_list[0]<=80:
    New_grade='C'
elif New_list[0]>=60 and New_list[0]<=70:
    New_grade='D'
else:
    New_grade='F'

if New_list[1]>90:
    New_grade1='A'
elif New_list[1]>=80 and New_list[1]<=90:
    New_grade1='B'
elif New_list[1]>=70 and New_list[1]<=80:
    New_grade1='C'
elif New_list[1]>=60 and New_list[1]<=70:
    New_grade1='D'
else:
    New_grade1='F'

Lst_New.append(New_grade)
Lst_New.append(New_grade1)
print(Lst_New)
lst=[[90,80,70,60],[10,81,50,65]]
Lst_New=[]
新列表=列表(映射(λx:sum(x)/len(x),lst))
打印(新列表)
如果新列表[0]>90:
新(u grade='A'
如果新列表[0]>=80,新列表[0]=70,新列表[0]=60,新列表[0]90:
新_一年级class='A'

如果New_list[1]>=80和New_list[1]=70和New_list[1]=60和New_list[1]到目前为止您尝试过的一切都很好,您只需在循环中迭代
New_list
,并在循环中包含
if
elif
块,您不需要定义多个变量,并使用冗余代码:

对于新列表中的分数:
如果得分>90:
新职等=‘A’
elif评分>=80,评分=70,评分=60,评分改进版
下面是代码的改进版本,user3551354。它实现与原始代码完全相同的结果(关于
Lst_New
的内容)

def等级至字母(等级):
如果等级>90:返回“A”
如果等级>80:返回“B”
如果等级>70:返回“C”
如果等级>60:返回“D”
返回“F”
lst=[[90,80,70,60],[10,81,50,65]]
Lst_New=[]
对于lst的学生:
平均值=总和(学生)/长度(学生)
打印(平均值)
新等级=等级至字母(平均值)
Lst_新建。追加(新建等级)
打印(Lst_新)
更完善的版本 我冒昧地重写了我的第一个版本的程序,以遵循一些最好的行业标准,例如正确的变量命名(遵循使用下划线的约定)、避免冗余代码以及利用字典避免冗余变量。我还添加了注释,这是设计优秀代码的黄金行业标准

我希望这个例子(或你的程序修订版)能帮助你

#Helper函数:根据给定的平均分数计算字母等级
def等级至字母(等级):
如果等级>90:返回“A”
如果等级>80:返回“B”
如果等级>70:返回“C”
如果等级>60:返回“D”
返回“F”
#确定学生名单,
#其中列表中的每个元素都是一个表示单个学生的词典
学生=[
{
“分数”:[90,80,70,60],
“平均分”:无,
“字母等级”:无
},
{
“分数”:[10,81,50,65],
“平均分”:无,
“字母等级”:无
}
]
#反复浏览学生列表
对于学生中的学生:
平均值=总和(学生分数)/(学生分数)
#更新字典中的分数和等级值(即学生)
学生['average_score']=avg
学生['letter_grade']=年级对字母(平均)
#现在“学生”词典包含了最新的平均成绩和字母等级
印刷品(学生)

您可以定义一种方法,用于计算列表中成绩的平均值,然后将该平均值转换为成绩

在这里,我将等级映射到一个默认值为
'F'
的字典中

from collections import defaultdict

def average_grade(grades):
    dct_grades = {60: 'D', 70: 'C', 80: 'B', 90: 'A'}
    dct_grades = defaultdict(lambda: 'F', dct_grades)
    avg = sum(grades) / len(grades)
    # print(avg)
    return dct_grades[int(avg)//10*10]
然后,您可以使用列表理解来映射包含统计信息的列表:

lst = [[90,80,70,60], [10,81,50,65]]
[average_grade(grades) for grades in lst]
#=> ['C', 'F']


请考虑<代码> dCTA级(100)>=>f′/代码>,所以也许您需要在字典中添加<代码> 100:“A”/代码>

至今为止您尝试过什么?我们需要更多信息来帮助您提高效率。请提供一个示例,并阅读您尝试运行代码时发生的情况?这和应该发生的有什么不同?当你说你想“返回一个列表”时,你实际上是指在
return
关键字的意义上吗?如果是的话,你想从哪里返回函数(或方法)?我想问题是“如何将数字转换成字母等级,应用到列表中的每个元素?”那么,你是否尝试过使用与将平均代码应用到每个元素相同的技术?(提示:
lambda
只是创建函数的一种方式;如果您需要比
lambda
所能做的更复杂的东西,只需正常编写一个函数即可。)我不知道OP想问什么,因为问题太模糊了。OP自己甚至没有回复任何帖子的事实让tbh非常恼火。