Skip to main content
 首页 » 编程设计

python之有效地计算小于给定值的列表条目

2025年05月04日39虾米姐

我有两个列表,一个包含员工薪水,一个包含查询。对于每个查询,我都想打印有多少员工薪水低于该值。

您可以在下面找到我当前使用的代码,它超出了我对大量输入的时间限制。因此,我正在寻找更有效的解决方案。

sal = [int(raw_input()) for x in range(num_employees)] 
q = [int(raw_input()) for x in range(num_queries)] 
for i in q: 
    count = 0 
    for ep in sal: 
        if ep < i: 
            count +=1 
    print count 

请您参考如下方法:

我不知道这是否会比您的解决方案更快(或更慢)。您可以使用 timeit模块来确定您的大量输入。

sal = [int(raw_input()) for x in range(num_employees)] 
q = [int(raw_input()) for x in range(num_queries)] 
for i in q: 
   print sum(1 for s in sal if s < i) 

根据数据大小,您可以预先对薪水和查询进行排序,然后只需要遍历列表一次:

idx = 0 
sal = sorted(sal) 
count = 0 
for q in sorted(queries): 
    while sal[idx] < q: 
        count += 1 
        idx += 1 
    print count 

第二种方法对于长输入会更快,但对于较短的输入可能会更慢 - 您必须使用代表性数据进行分析。如果您的数据已经排序,则此方法将非常快。