【发布时间】:2016-09-15 16:06:27
【问题描述】:
我需要创建一个 python 函数,给定有序列表 a 和 b 返回 True .
这当然很容易通过使用这样的东西来完成:
for item in a:
if (a+1 in b):
return True
但是,我需要使其尽可能高效,因为该函数将用于处理大量数据。给我的提示是使用 iter() 和 next() 操作,但我还没有找到一种方法来使用它们进行有效处理。有谁知道如何实现这些,或使用另一种快速算法?
提前致谢。
【问题讨论】:
-
您可以将
b转换为一个集合,或者您可以订购它以更快地找到其中的内容。我不知道你为什么被告知使用iter和next。 -
你的意思是
for item in a: if item+1 in b: return True?如果b很大,请将其设为集合而不是列表。 -
这个列表是专门排序的,我应该利用这个事实来加快速度。
-
如果可能,将
a转换为生成器函数。这将使您的代码更节省内存。只是循环遍历生成器中的列表无济于事。这里的用例是如果你从某个地方获取数据或以某种方式生成它wiki.python.org/moin/Generators -
@wim 非建设性的。
标签: python list loops iterator