Лучший способ найти похожие предметы в питоне - PullRequest
3 голосов
/ 02 апреля 2010

У меня есть 1M номеров: N [] и 1 одно число n, теперь я хочу найти в этих 1M числах, которые похожи на это одно число, скажем, область [n-10, n + 10]. Каков наилучший способ сделать это в Python? Нужно ли сортировать число 1М и выполнять итерацию?

Ответы [ 3 ]

3 голосов
/ 02 апреля 2010

[x for x in N if n - 10 <= x <= n + 10]

1 голос
/ 02 апреля 2010

Другое решение:

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).

1 голос
/ 02 апреля 2010
results=[x for x in numbers if x >= n-10 and x <= n+10]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...