Veo que la gente está usando any
para recopilar otra lista para ver si un elemento existe en una lista, pero ¿hay alguna forma rápida de hacerlo ?:
if list.contains(myItem):
# do something
Veo que la gente está usando any
para recopilar otra lista para ver si un elemento existe en una lista, pero ¿hay alguna forma rápida de hacerlo ?:
if list.contains(myItem):
# do something
Respuestas:
Puedes usar esta sintaxis:
if myItem in list:
# do something
Además, operador inverso:
if myItem not in list:
# do something
Funciona bien para listas, tuplas, conjuntos y dictados (teclas de verificación).
Tenga en cuenta que esta es una operación O (n) en listas y tuplas, pero una operación O (1) en conjuntos y dictados.
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
no es una tupla, sino una cadena (los paréntesis no hacen nada, simplemente (1)
es un número entero). Si desea una tupla de 1, debe agregar una coma después del elemento individual: ("--skip-ias",)
(o (1,)
).
Además de lo que otros han dicho, también puede interesarle saber que lo que in
hace es llamar al list.__contains__
método, que puede definir en cualquier clase que escriba y puede ser extremadamente útil para usar Python en toda su extensión.
Un uso tonto puede ser:
>>> class ContainsEverything:
def __init__(self):
return None
def __contains__(self, *elem, **k):
return True
>>> a = ContainsEverything()
>>> 3 in a
True
>>> a in a
True
>>> False in a
True
>>> False not in a
False
>>>
Se me ocurrió esta línea recientemente para saber True
si una lista contiene cualquier número de ocurrencias de un elemento, oFalse
si no contiene ocurrencias o nada en absoluto. El uso next(...)
le da a este un valor de retorno predeterminado ( False
) y significa que debería ejecutarse significativamente más rápido que ejecutar toda la comprensión de la lista.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
any(item == test_item for item in list_to_test)
funcionaría también, creo?
El método de lista index
devolverá -1
si el elemento no está presente, y devolverá el índice del elemento en la lista si está presente. Alternativamente, en una if
declaración puede hacer lo siguiente:
if myItem in list:
#do things
También puede verificar si un elemento no está en una lista con la siguiente instrucción if:
if myItem not in list:
#do things
index
método no devuelve -1 si el elemento no está presente, arroja una ValueError
excepción.