Ik zie dat mensen any
gebruiken om een andere lijst te verzamelen om te zien of een item in een lijst bestaat, maar is er een snelle manier om zoiets te doen?
if list.contains(myItem):
# do something
Antwoord 1, autoriteit 100%
U kunt deze syntaxis gebruiken:
if myItem in list:
# do something
Ook inverse operator:
if myItem not in list:
# do something
Het werkt prima voor lijsten, tuples, sets en dicts (controleertoetsen).
Merk opdat dit een O(n)-bewerking is in lijsten en tupels, maar een O(1)-bewerking in sets en dictaten.
Antwoord 2, autoriteit 7%
Naast wat anderen al hebben gezegd, ben je misschien ook geïnteresseerd om te weten dat wat in
doet, is het aanroepen van de methode list.__contains__
, die je kunt definiëren op elke klas die je schrijft en kan extreem handig worden om python in zijn volle omvang te gebruiken.
Een dom gebruik kan zijn:
>>> 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
>>>
Antwoord 3
Ik heb onlangs deze oneliner bedacht om True
te krijgen als een lijst een willekeurig aantal exemplaren van een item bevat, of False
als het geen exemplaren of niets bevat op alle. Het gebruik van next(...)
geeft dit een standaard retourwaarde (False
) en betekent dat het aanzienlijk sneller zou moeten werken dan het uitvoeren van het hele lijstbegrip.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
Antwoord 4
De lijstmethode index
retourneert -1
als het item niet aanwezig is, en retourneert de index van het item in de lijst als het wel aanwezig is. Als alternatief kunt u in een if
-statement het volgende doen:
if myItem in list:
#do things
Je kunt ook controleren of een element niet in een lijst staat met het volgende if-statement:
if myItem not in list:
#do things
Antwoord 5
Er is ook de lijstmethode:
[2, 51, 6, 8, 3].__contains__(8)
# Out[33]: True
[2, 51, 6, 3].__contains__(8)
# Out[33]: False
Antwoord 6
Er is een andere methode die index
gebruikt. Maar ik weet niet zeker of dit een fout heeft of niet.
list = [5,4,3,1]
try:
list.index(2)
#code for when item is expected to be in the list
print("present")
except:
#code for when item is not expected to be in the list
print("not present")
Uitvoer:
niet aanwezig