我有1M个数字:N []和1个单个数字n,现在我想在那些与该单个数字相似的1M数字中找到,比如说[n-10,n + 10]的区域。 python中最好的方法是什么?我是否必须对1M编号进行排序并进行迭代?
答案 0 :(得分:3)
[x for x in N if n - 10 <= x <= n + 10]
答案 1 :(得分:1)
results=[x for x in numbers if x >= n-10 and x <= n+10]
答案 2 :(得分:1)
另一种解决方案:
is_close_to_n = lambda x: n-10 <= x <= n+10
result = filter(is_close_to_n, N)
概括一点:
def is_close_to(n):
f = lambda x: n-10 <= x <= n+10
return f
result12 = filter(is_close_to(12), N)
result123 = filter(is_close_to(123), N)
不排序。排序通常是O(n log n);蛮力搜索是O(n)。