如何在python中加速该算法

如何在python中加速该算法,python,algorithm,Python,Algorithm,问题陈述是: 得分最高的玩家在排行榜上排名1number。 得分相等的玩家将获得相同的排名编号,下一个玩家将获得紧随其后的排名编号。 例如,四名球员的得分分别为100分、90分、90分、80分和100分。这些玩家的级别分别为1、2、2和3 使用此排名方法,需要根据球员在比赛中的得分计算球员的排名,球员得分作为输入(“得分”列表)。其次,提供了一个特定玩家“爱丽丝”的分数,对于她玩的每一个游戏,需要计算她在排行榜上的位置 假设排行榜上有6名玩家的分数[100100,50,40,40,20,10]。

问题陈述是:

得分最高的玩家在排行榜上排名
1
number。 得分相等的玩家将获得相同的排名编号,下一个玩家将获得紧随其后的排名编号。 例如,四名球员的得分分别为100分、90分、90分、80分和100分。这些玩家的级别分别为1、2、2和3

使用此排名方法,需要根据球员在比赛中的得分计算球员的排名,球员得分作为输入(“得分”列表)。其次,提供了一个特定玩家“爱丽丝”的分数,对于她玩的每一个游戏,需要计算她在排行榜上的位置

假设排行榜上有6名玩家的分数
[100100,50,40,40,20,10]
。爱丽丝第一次参加比赛,得分为5分,排名第6,排在名单的最后。下一场比赛她得了25分,现在她排名第四。接下来她得到50分,在下一场比赛中,这一次她的排名是2

#!/bin/python3
import sys
n = int(input().strip())
scores = [int(scores_temp) for scores_temp in input().strip().split(' ')]
m = int(input().strip())
alice = [int(alice_temp) for alice_temp in input().strip().split(' ')]
# your code goes here
for _ in alice:
    scores.append(_)
    print(list(sorted(set(scores),reverse=True)).index(_)+1)
此代码适用于范围为200~500的输入。但是如果它进入非常高的输入,比如10*9,那么代码将由于超时而终止。我想知道如何即兴编写这段代码,使它运行得更快

编辑

n=int(输入().strip())
分数=排序(设置([int(分数临时)用于输入中的分数临时().strip().split(“”)]),反向=真)
m=int(输入().strip())
alice=[int(alice_temp)表示输入()中的alice_temp。拆分(“”)]
对于《爱丽丝》中的一部电影:
排名=1
对于uu分数:

如果(a没有必要将Alice的分数附加到
分数
。首先确保
分数
从高到低排序

然后,对Alice的每个分数计算她的排名,如下所示:

rank=1
开始,在
scores
列表中迭代。每次查看的分数小于上一个分数时,将1添加到
rank
,并在查看的分数等于或小于Alice的分数时返回
rank
的值

编辑
这个答案假设只有每个玩家的最高分数是相关的。

@MarkSchultheiss lolStyle挑剔:不要使用
\uu
作为名称,除非它是一个一次性变量(在你的情况下不是,因为你在循环中使用它)。事实上,如果需要这样的东西来大规模收集数据,您需要重新设计它,这样它就不需要为每次更新处理所有内容。只需运行一个守护程序,保存所有玩家的当前分数,并根据最新的分数请求进行更新。还可以根据需要添加/删除玩家。您需要什么need是一个新的程序,而不是一个算法。无论如何,这听起来像是一个用例,也不必费心去除输入。int()不关心空白,重新生成字符串会使您的速度有所降低。如果是这种情况,请尝试alice=max([int(alice_temp)表示输入中的alice_temp().strip().split(“”))@user1269942根据我对任务的理解,输出应该是Alice对每个分数的排名。在这种情况下,最大值没有帮助
n = int(input().strip())
scores = sorted(set([int(scores_temp) for scores_temp in input().strip().split(' ')]),reverse=True)
m = int(input().strip())

alice=[int(alice_temp) for alice_temp in input().split(' ')]        
for a in alice:
    rank=1
    for _ in scores:
        if(a<_):
            rank=rank+1
        else:
            #print(rank)
            break
    print(rank)