Python比较列表平均排序

2024-09-28 19:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在处理一个python问题,它涉及到获取一个由2个子列表和一个标识符组成的列表,总共有三件事。程序名为compareTeams(lsteams),用于计算球队在多个赛季中的平均获胜百分比。第一个列表是赢得的游戏,第二个列表是失败的游戏。所讨论的程序需要这些列表的列表,并尝试通过将赢得的游戏数与总游戏数相加,然后按列表的长度将其逐出,从而找到最高的平均值。两个列表的大小相同。然后,它将平均值按从大到小的顺序进行排序,并将标识符标记为每个列表中的第一个元素。举个例子:

teamA = [[6, 4, 8, 5, 0], [3, 6, 0, 2, 4], 'A'] avg winning percentage = 0.56

(如果我的解释不好且难以理解,对于teamA,百分比计算为(6/9+4/10+8/8+5/7+0/4)/5)

^{pr2}$

我已经对这个问题进行了大量的思考,但对python还是新手,所以我不确定我是否正确地调用了所有内容。我使用的解释器在运行过程中甚至没有显示我的程序,这使我相信我可能做错了什么。这是我的代码:

def compareTeams(lstTeams):
  a = 0
  x = 0
  lst = []
  y = lstTeams[a]
  for a in range(0, len(y)):
    x = x + ((float(y[0][0]) / (y[1][0])) / len(y[0]))
    a = a + 1
    lst.append(x)
  return lst.reverse(lst.sort())

这是对的吗?我做错什么了吗?任何帮助都将不胜感激。在

注意:我使用的是Python2.7。在


Tags: 程序游戏列表len顺序标识符平均值百分比
1条回答
网友
1楼 · 发布于 2024-09-28 19:27:54

您可以在此处使用zip

def compare_team(teams):
   lis = []
   for team in teams:
       #zip fetches items from the same index one by one from the lists passed to it
       avg = sum( (x*1.0)/(x+y) for x,y in zip(team[0],team[1]))/ len(team[0])
       lis.append([team[-1],avg])

   lis.sort(key = lambda x:x[1],reverse = True) #reverse sort based on the second item
   return lis



>>> compare_team(([teamA, teamB, teamC]))
[['C', 1.0], ['A', 0.5561904761904761], ['B', 0.5]]

相关问题 更多 >