Vedo che le persone usano anyper raccogliere un altro elenco per vedere se esiste un elemento in un elenco, ma esiste un modo rapido per farlo ?:
if list.contains(myItem):
# do something
Vedo che le persone usano anyper raccogliere un altro elenco per vedere se esiste un elemento in un elenco, ma esiste un modo rapido per farlo ?:
if list.contains(myItem):
# do something
Risposte:
È possibile utilizzare questa sintassi:
if myItem in list:
# do something
Inoltre, operatore inverso:
if myItem not in list:
# do something
Funziona benissimo per liste, tuple, set e dadi (controlla i tasti).
Si noti che questa è un'operazione O (n) in elenchi e tuple, ma un'operazione O (1) in set e dicts.
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")non è una tupla, ma una stringa (le parentesi non fanno nulla, proprio come (1)è solo un numero intero). Se vuoi una tupla, devi aggiungere una virgola dopo il singolo elemento: ("--skip-ias",)(o (1,)).
Oltre a ciò che altri hanno detto, potresti anche essere interessato a sapere che ciò che infa è chiamare il list.__contains__metodo, che puoi definire su qualsiasi classe che scrivi e che può essere estremamente utile per usare Python al massimo.
Un uso stupido può 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
>>>
Di recente mi è venuta in mente questa fodera per sapere Truese un elenco contiene un numero qualsiasi di occorrenze di un elemento o Falsese non contiene occorrenze o nulla. L'uso di next(...)questo fornisce un valore di ritorno predefinito ( False) e significa che dovrebbe essere eseguito molto più velocemente rispetto all'esecuzione dell'intera comprensione dell'elenco.
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)funzionerebbe anche io, penso?
Il metodo elenco indexrestituirà -1se l'elemento non è presente e restituirà l'indice dell'elemento nell'elenco se è presente. In alternativa, in una ifdichiarazione è possibile effettuare le seguenti operazioni:
if myItem in list:
#do things
Puoi anche verificare se un elemento non è in un elenco con la seguente istruzione if:
if myItem not in list:
#do things
indexmetodo non restituisce -1 se l'elemento non è presente, genera ValueErrorun'eccezione.