【发布时间】:2016-12-29 13:20:30
【问题描述】:
我有一个大约 30 个花车的列表。我想看看我的列表中是否有特定的浮点数。例如:
1 >> # For the example below my list has integers, not floats
2 >> list_a = range(30)
3 >> 5.5 in list_a
False
4 >> 1 in list_a
True
我的代码中的瓶颈是第 3 行。我多次搜索列表中是否有一个项目,我需要一个更快的替代方案。这个瓶颈占用了我 99% 以上的时间。
我可以通过将list_a 设为集合而不是列表来加速我的代码。还有其他方法可以显着加快这条线的速度吗?
【问题讨论】:
-
将
list变成set(一次),然后使用set进行会员测试是加快此过程的标准方法。在某些情况下还有其他可以提供帮助的方法(如果列表已排序,则进行二等分),但没有其他“通用”解决方案。 -
顺便说一句。您确定要测试会员资格吗?它检查相等性和floating-point math is known to be broken。
标签: python list optimization set