Vedo che le persone usano any
per 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 any
per 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 in
fa è 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 True
se un elenco contiene un numero qualsiasi di occorrenze di un elemento o False
se 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 index
restituirà -1
se l'elemento non è presente e restituirà l'indice dell'elemento nell'elenco se è presente. In alternativa, in una if
dichiarazione è 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
index
metodo non restituisce -1 se l'elemento non è presente, genera ValueError
un'eccezione.