Вы полностью изменили вопрос между ними. Одна вещь, которую вы должны заметить: если у вас есть несортированный список длины, независимо от того, что вы делаете, O(n)
- лучший вариант.
Если список имеет какой-либо шаблон или производную от формулы, или имеет период c, возможна небольшая оптимизация.
Вы можете немного оптимизировать, используя такие библиотеки, как numpy
, вы может получить хорошую оптимизацию только в том случае, если ваш входной массив также является массивом numpy, в противном случае используйте itertools
, filter
et c, если вы используете только список
# with numpy
import numpy
a = numpy.array([1,2,3,111,5,6,7,8,9,889,12,2,111,4,5,6,889])
filter_array = a[numpy.logical_or(a < 111, a >889)]
#with filter
l = [1,2,3,111,5,6,7,8,9,889,12,2,111,4,5,6,889]
filter_list_gen = filter(lambda x : x > 889 or x < 111, l)
for l in filter_list_gen:
# do the stuff
pass
Numpy идеально подходит для манипуляции с массивами, вам нужно будет запустить l oop, плюс numpy фильтрацию l oop, но это поможет вам иметь много манипуляций с массивами в целом
фильтр идентификатора, как обычная итерация, но немного быстрее , это как ленивый eval.