有这么一个需求,我们有一个列表A,里面有10万条数据,现在另外有一个列表B,里面有1万条数据,其中这1万条数据一定包含在10万条数据里面,而且这1万条数据里面有可能有重复的数据出现,我们需要在10万条数据里面,找出那不是B里面的数据。
那为了方便起见,我们直接从a里面选择了前10000个数据作为b列表的内容。
看一下我们的筛选方式一:
上面的运行了接近22秒,因为for循环需要10万次,每次都需要判断当前元素是否在b中。
我们换一下,看看筛选方式二:
运行时间接近两秒,直接把原始内容copy了一份到结果ret里面,这里耗时接近1秒,然后循环里面,只循环了b,也就是1万次,然后调用列表的remove函数移除元素,达到了我们的结果。
我们最后来看一看几乎是微妙级别的计算方式:
通过timeit模块测试的结果是,0.0023,对,我们使用了python里面集合这个概念,直接通过集合的减法获得了我们的结果。
所以选对方法完全可以在达到同样的目的的情况下提升我们的运行效率哦,至少第一个例子的20几秒,一般情况下是完全不能忍受的。
领取专属 10元无门槛券
私享最新 技术干货