【发布时间】:2021-03-27 03:16:27
【问题描述】:
假设我有一个清单:
my_list = [0.1, 0.14, 0.1, 0.03, 0.3, 0.01, 0.6]
我想将最大值限制为 0.2,所以想要的结果是:
my_list
[0.1, 0.14, 0.1, 0.03, 0.2, 0.01, 0.2]
我试过了
[0.2 if x>0.2 else x for x in my_list]
还有
list(map(lambda x: min(x,0.2),my_list))
发现第一个效率提高了大约 5-10 %,但仍然太慢。
还有什么更节省时间/复杂性的方法吗?
【问题讨论】:
-
您是否尝试过将 numpy 与
np.clip(my_list, a_max=0.2)一起使用? -
时间复杂度明智,没有更有效的方法。这必须是线性时间。如果您必须使用 Python 列表,那么可能没有什么比这两种方法更快的了。但是,如果您使用
numpy,则可以使用numpy更快地完成此类事情。 -
[x for x in my_list if x < 0.2] + [0.2]?顺便说一句,如果你关心效率,你不应该使用 Python...
标签: python list performance iteration max