Ich möchte überprüfen, ob meine Objektliste ein Objekt mit einem bestimmten Attributwert enthält.
class Test:
def __init__(self, name):
self.name = name
# in main()
l = []
l.append(Test("t1"))
l.append(Test("t2"))
l.append(Test("t2"))
Ich möchte eine Möglichkeit prüfen, ob die Liste beispielsweise ein Objekt mit Namen enthält "t1"
. Wie geht das? Ich habe https://stackoverflow.com/a/598415/292291 gefunden .
[x for x in myList if x.n == 30] # list of all matches
any(x.n == 30 for x in myList) # if there is any matches
[i for i,x in enumerate(myList) if x.n == 30] # indices of all matches
def first(iterable, default=None):
for item in iterable:
return item
return default
first(x for x in myList if x.n == 30) # the first match, if any
Ich möchte nicht jedes Mal die gesamte Liste durchgehen, ich muss nur wissen, ob es eine Instanz gibt, die übereinstimmt. Wird first(...)
oder any(...)
oder etwas anderes das tun?
python
list
attributes
any
Jiew Meng
quelle
quelle
first()
Funktion ist als eingebaute Funktion verfügbarnext()
.Antworten:
Wie Sie der Dokumentation entnehmen können, schließt die
any()
Funktion kurz und kehrt zurückTrue
, sobald eine Übereinstimmung gefunden wurde.quelle