Digamos que hay una lista a que contiene números y letras. ¿Existe una forma rápida de descubrir que la lista no contiene algún elemento específico? Planeo usarlo en condiciones.Python, descubra que una lista no tiene el elemento específico
Respuesta
Tal
3 not in [1, 2, "a"]
# True
Nota: Si usted puede poner los elementos como claves de un diccionario y luego evaluar a que es mucho más rápido gracias al algoritmo de hash. Solo será un problema si su lista es muy larga o si su aplicación hace mucho de este tipo de cosas. De lo contrario, "X no en Y", como dice Sven.
También podría usar un conjunto en este caso. –
Usted * debería * usar un conjunto si no tiene uso para los valores dict. – FogleBird
Qué quiere decir
bool([x for x in alist if isinstance(x, int)])
mejor versión (por Sven Marnach):
any(isinstance(x, int) for x in alist)
?
Si esto realmente es lo que quiere el OP, sería mejor escribirlo como 'any (isinstance (x, int) para x en alist)', porque esto es más conciso y deja de iterar en el primer int encontrado. Pero no creo que esto sea lo que se pide. –
tienes razón. he editado;) – Ant
Depende de lo que trates de hacer. Si la velocidad no importa, entonces usa a en lst. Si no importa, dependerá de si puede permitirse convertir primero su lista a una estructura de datos diferente (es decir, a menudo buscará elementos en la lista decir), tamaño, etc. ...
Para dar una idea :
import timeit
a = range(10000)
da = dict(zip(a, [None for i in a]))
def list_first():
return 0 in a
def dict_first():
return 0 in da
def list_last():
return 9999 in a
def dict_last():
return 9999 in da
if __name__ == "__main__":
for f in ["list_first", "dict_first", "list_last", "dict_last"]:
t = timeit.Timer("%s()" % f, setup="from __main__ import %s" % f)
print min(t.repeat(number=10000))
Esto me da:
0.00302004814148
0.00318598747253
4.21943712234
0.004145860672
Si nos fijamos por un artículo que está en el principio de la lista, utilizando un diccionario no acelerar las cosas, como se esperaba. Si busca un elemento al final, entonces la diferencia es muy significativa (3 orden de magnitud), aunque como se esperaba: dict use hashtable, listas necesita buscar cada elemento uno después del otro.
Si los elementos son comparables, también puede obtener una gran velocidad ordenando su secuencia y usando una búsqueda binaria (log (N) en lugar de N, log (N) siendo relativamente rápido comparado con O (1) para N demasiado grande en la práctica para python), o usando estructuras más avanzadas (árbol de búsqueda binaria, etc.). Puede ser bastante complejo: las estructuras de datos para la búsqueda rápida son, después de todo, uno de los problemas más estudiados en CS.
Aquí hay una versión más concisa de su código usando sets en lugar de dicts: https://gist.github.com/742056. Especialmente su llamada de constructor a 'timeit.Timer' parece un poco verbosa :) –
- 1. lista barajar específico en Python
- 2. ¿Python tiene una lista inmutable?
- 3. Verifique el elemento específico en una lista en Drools
- 4. En Python, ¿cómo puedo encontrar el índice del primer elemento en una lista que NO tiene algún valor?
- 5. Unirme a una lista que tiene valores enteros con Python
- 6. ¿Cómo seleccionar un elemento que no tiene un nombre de clase específico, usando jQuery?
- 7. Extracción elemento específico de una lista con jQuery
- 8. inserte el eco en el elemento html específico como div que tiene un id o clase
- 9. Obtenga el valor del elemento JSON específico en Python
- 10. MVC3 Lista desplegable que no selecciona el elemento seleccionado
- 11. Python- encontrar el elemento con eventos máximo en una lista
- 12. ¿Cómo verificar el último elemento de una lista de Python?
- 13. ¿Cómo elimino el primer elemento de una lista de Python?
- 14. Compruebe si el elemento cliqueado no tiene una clase específica
- 15. Encontrar el elemento antes y después de un elemento específico
- 16. Obtiene el elemento ArrayList específico
- 17. Python: devuelve el índice del primer elemento de una lista que hace que una función pasada sea verdadera
- 18. Seleccionar elemento específico antes de que otro elemento
- 19. elemento específico en JSON
- 20. Python: Usando xpath localmente/en un elemento específico
- 21. Python: Reemplazar un elemento en una lista de listas (# 2)
- 22. ¿Cómo puedo encontrar un elemento que contenga texto específico en Selenium Webdriver (Python)?
- 23. lista de Python mayor que el número
- 24. Python: ¿Cuánto espacio ocupa cada elemento de una lista?
- 25. ¿Pasa cada elemento de una lista a una función que toma múltiples argumentos en Python?
- 26. actualizar mongodb el elemento específico de subarreglo
- 27. Python: añada el elemento a la lista N veces
- 28. Cómo iterar sobre una lista repitiendo cada elemento en Python
- 29. ¿Tiene python una versión no lenta de itertools.groupby?
- 30. Obtener lista elemento por atributo en Python
¿No sería mejor una tupla? – user225312
@A A: El OP pidió verificar si un elemento está en una lista. Lo más probable es que esa lista no esté codificada en su código. –