Sorting 排序一些代码,我需要缩短它
对,所以我修改了代码,这样它只做平均值,但当我运行它时,它不会停止,任何人都可以帮助我。 谢谢 我需要帮助缩短这段代码,因为它太长了。我还需要对其他三个类执行此操作,我不希望它是一行代码,我只是想知道它是否可以缩短Sorting 排序一些代码,我需要缩短它,sorting,python-3.x,Sorting,Python 3.x,对,所以我修改了代码,这样它只做平均值,但当我运行它时,它不会停止,任何人都可以帮助我。 谢谢 我需要帮助缩短这段代码,因为它太长了。我还需要对其他三个类执行此操作,我不希望它是一行代码,我只是想知道它是否可以缩短 谢谢以下是我认为您想要的: fd = open('Class1.txt') lines = [line.strip() for line in fd] s = {} for line in lines: splitted = [i for i in line.
谢谢以下是我认为您想要的:
fd = open('Class1.txt')
lines = [line.strip() for line in fd]
s = {}
for line in lines:
splitted = [i for i in line.split(',')]
key = splitted[0]
s[key] = [int(n) for n in splitted[1:]]
def average():
avg_mark = lambda name:sum(s[name])/len(s[name])
for i in sorted(s.keys(),key=avg_mark,reverse=True):
print (i,avg_mark(i),"\n")
average()
average()
average()
当然,在现实中,由于在average
中调用average
,您将遇到maxrecursiondepth
问题。因此,如果您真的希望代码能够做到这一点,您不妨这样做:
import csv
with open('Class1.txt') as fd:
s = {row[0]:[int(n) for n in row[1:]] for row in csv.reader(fd, delimiter=',')}
def average():
avg_mark = lambda name : sum(s[name])/len(s[name])
for name in sorted(s, key=avg_mark, reverse=True):
print(name, avg_mark(name)) # newline prints automatically
请不要使用SO在GCSE考试中作弊。你应该提交你自己的作品,而不是让互联网重写它。你为什么要缩短它?通过递归调用函数重复输入请求是糟糕的设计。为了让它看起来更专业,因为这几乎肯定是关于你的,请务必阅读。
def f(): f()