在Python中删除大列表中最大值的快速方法?

时间:2015-10-08 13:34:21

标签: python list

很快:我有一个充满数字的文件。我使用此函数将此文件加载到列表中:

with open("log.txt") as log:
    avg = log.read().split(",")
avg = [int(i) for i in avg]
print("list constructed.")

现在我要删除列表中大于某个数字的所有值。我设置了这个循环:

while (max(avg)) > 200:
    avg.remove(max(avg))

不幸的是,每次迭代需要花费大量的时间。差不多五秒钟。我应该提到文件log.txt和扩展名列表avg有超过1.01亿个条目,这使得每次迭代5秒的速度无法忍受。有没有办法更优雅地做到这一点,最重要的是,更快?我对编程完全不熟悉,所以我很感激你的帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

替换第一个循环

avg = [int(i) for i in avg] 

有条件的:

avg = [int(i) for i in avg if int(i) <= 200]

演示:https://repl.it/BOi8/1