Filtrado / iteración a través de listas muy grandes en python

Si tengo una lista con, por ejemplo, 10 millones de objetos, ¿cómo puedo filtrar la lista rápidamente? Se tarda unos 4-5 segundos para una iteración completa a través de una lista de comprensión. ¿Hay estructuras de datos o bibliotecas eficientes para esto en Python? ¿O Python no es adecuado para grandes conjuntos de datos?

Itertools está diseñado para un bucle eficiente. En particular, es posible que encuentre que el ifilter adapta a su propósito. Iterar a través de grandes estructuras de datos siempre es costoso, pero si solo necesita algunos datos a la vez, la evaluación perezosa puede ayudar mucho.

También puede intentar usar expresiones de generador, que generalmente son idénticas a sus contrapartes de comprensión de lista (aunque el uso puede ser diferente) o un generador, que también tiene los beneficios de la evaluación perezosa.

Si tienes tipos uniformes de números y si la velocidad es tu objective principal (y quieres usar Python), usa una matriz de Numpy.

Incluso el uso de las funciones incorporadas en una matriz de enteros muy primitivos toma varios segundos para evaluar en mi computadora.

 >>> l=[1]*10000000 >>> s=filter(lambda x:True,l) 

Le sugiero que utilice un enfoque diferente, como el uso de Numpy o la evaluación perezosa con generadores y / o el módulo de iteración itertools