risposta-alla-domanda-sullo-sviluppo-web-bd.com

Esiste una funzione short contiene per le liste?

Vedo che le persone stanno usando any per raccogliere un altro elenco per vedere se un elemento esiste in un elenco, ma c'è un modo rapido per farlo ?:

if list.contains(myItem):
    # do something
431
Joan Venge

Puoi usare questa sintassi:

if myItem in list:
    # do something

Inoltre, operatore inverso:

if myItem not in list:
    # do something

Funziona bene per liste, tuple, set e dict (tasti di controllo).

Nota che questa è un'operazione O(n) in liste e tuple, ma un'operazione O(1) in serie e dict.

746
defuz

Oltre a ciò che altri hanno detto, potresti anche essere interessato a sapere che cosa fa in è chiamare il metodo list.__contains__, che puoi definire su qualsiasi classe che scrivi e può essere estremamente utile per usare python nella sua completezza.

Un uso stupido potrebbe essere:

>>> 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
>>>         
60
Ant

Recentemente mi è venuta in mente questa fodera per ottenere True se un elenco contiene un numero qualsiasi di occorrenze di un elemento o False se non contiene occorrenze o nulla del tutto. L'utilizzo di next(...) fornisce a questo un valore di ritorno predefinito (False) e significa che dovrebbe essere eseguito molto più velocemente rispetto all'esecuzione dell'intera lista di comprensione.

list_does_contain = next((True for item in list_to_test if item == test_item), False)

5
Dustin Raimondi

Il metodo list index restituirà -1 se l'elemento non è presente e restituirà l'indice dell'elemento nell'elenco se è presente. In alternativa, in una dichiarazione if puoi fare quanto segue:

if myItem in list:
    #do things

Puoi anche controllare se un elemento non è in una lista con la seguente istruzione if:

if myItem not in list:
    #do things
3
Mr. Squig