¿Existe una función de contenido breve para listas?
Dada una lista xs
y un valor item
, ¿cómo puedo verificar si xs
contiene item
(es decir, si alguno de los elementos de xs
es igual a item
)? ¿ Hay algo así xs.contains(item)
?
Para consideraciones de rendimiento, consulte La forma más rápida de comprobar si existe un valor en una lista .
Usar:
if my_item in some_list:
...
Además, operación inversa:
if my_item not in some_list:
...
Funciona bien para listas, tuplas, conjuntos y dictados (verificar claves).
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.
Además de lo que otros han dicho, también te puede interesar saber que lo que in
hace es llamar al list.__contains__
método, que puedes definir en cualquier clase que escribas y que puede resultar 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
>>>
Recientemente se me ocurrió esta línea para saber True
si una lista contiene cualquier cantidad de apariciones de un elemento, o False
si no contiene ninguna ocurrencia o nada en absoluto. El uso next(...)
le da a esto un valor de retorno predeterminado ( False
) y significa que debería ejecutarse significativamente más rápido que ejecutar toda la lista de comprensión.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
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 declaración if:
if myItem not in list:
#do things
También existe el método de lista:
[2, 51, 6, 8, 3].__contains__(8)
# Out[33]: True
[2, 51, 6, 3].__contains__(8)
# Out[33]: False