python 如何重新排列列表中的字符串并求其整数的平均值?

vlju58qv  于 2022-11-28  发布在  Python
关注(0)|答案(1)|浏览(117)

在我的课堂上,我必须把一个文件转换成一个列表,其中的列表分隔每个“参赛者”,然后重新排列其中的字符串,如果它是一个名字,名字John Doe将变成Doe John。在此之上,我还得取每个列表中的整数,并计算它们的平均值,我们在课堂上没有做过这个,所以我很困惑,谢谢你的帮助。
我已经能够把我的文件变成一个列表,通过做我已经把下面,但在那之后,我完全卡住了。

my_file = open("sample-1.txt.txt")
data3 = my_file.read()
list1 = data3.split(" ")
flist = list()
len_flist = 10
for i in range(0, len(list1), len_flist):
    flist.append(list1[i:i+len_flist])
my_file.close()
print(flist)

输出量:
[[“泰”、“科布”、“13099”、“11434”、“3053”、“724”、“295”、“117”、“1249”、“9”]、[“\n芯片”、“琼斯”、“10614”、“8984”、“1671”、“549”、“38”、“468”、“1512”、“1”]、[“\n乔尼”、“板凳”、“8674”、“7658”、“1254”、“381”、“24”、“389”、“891”、“1”]、[“\n汉克”、“亚伦”、“13941”、“12364”、“2294 "、”624“、”98“、”755“、”1402“、”3“]、[”\n托尼“、”格温“、10232、9288、2378、543、85、135、434、2]、[约翰、斯莫尔茨、1167、948、118、26、2、5、79、3]、[亚伦、伍兹、1122、123]第324条、第45条、第88条、第1561条、第9条、第18条]]
输出结果是老师希望我们写的。但我不知道如何将名字翻转为“Cobb,Ty”,然后计算这些数字的平均值。她希望最后的输出结果是“[[Cobb,Ty,3747.5],[...],[...]}”

vuv7lop3

vuv7lop31#

如果使用file.readlines()而不是file.read()会更好,因为它会将它拆分到每一行中,分隔每个参赛者。
这样,你就可以对每个参赛者做一些事情,比如:

fin = open("sample-1.txt.txt")
contestants = fin.readlines()
final = []
for contestant_string in contestants:
    if contestant_string == "\n":
        continue #if there is an extra line at the end, with nothing in it
    contestant = contestant_string.strip().split(" ") #remove any annoying "\n"s
    data = [contestant[1], contestant[0]] # reverses name
    total = 0 # holds total score
    for score in contestant[2:]: # goes through each score (skips the name)
        total+=int(score)
    data.append(total/len(contestant[2:]) # the average
    final.append(data)
fin.close()
print(data)

相关问题