【发布时间】:2018-07-01 08:22:45
【问题描述】:
我有一个包含约 11,000 个元素的 Python 列表 e。然后我有一个索引列表 p 约 3,000 个元素。
我想过滤 e 以仅保留 p 中指定的索引处的元素。
到目前为止,我使用的是简单的列表理解:
f = [x for i,x in enumerate(e) if i in p]
但是,这个实现需要大约 1 秒。
这可能不多,但由于我必须为 10,000 个列表执行此操作,因此需要 2 个多小时。然后我必须对 200 批 10,000 个列表再次重复此操作,所以它真的太慢了。
知道如何以更快的方式获得相同的结果吗?
【问题讨论】:
-
使
p成为set。如果是列表,难怪它为什么慢。