Chcę sprawdzić, czy moja lista obiektów zawiera obiekt o określonej wartości atrybutu.
class Test:
def __init__(self, name):
self.name = name
# in main()
l = []
l.append(Test("t1"))
l.append(Test("t2"))
l.append(Test("t2"))
Chcę mieć możliwość sprawdzenia, czy lista zawiera na przykład obiekt o nazwie "t1"
. Jak można to zrobić? Znalazłem https://stackoverflow.com/a/598415/292291 ,
[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
Nie chcę za każdym razem przeglądać całej listy, po prostu muszę wiedzieć, czy jest jedna instancja, która pasuje. Czy first(...)
czy any(...)
coś innego to zrobi?
python
list
attributes
any
Jiew Meng
źródło
źródło
first()
Funkcja jest dostępna jako wbudowany nazywanext()
.Odpowiedzi:
Jak można łatwo zauważyć w dokumentacji ,
any()
funkcja zwiera i zwraca,True
gdy tylko zostanie znalezione dopasowanie.any(x.name == "t2" for x in l)
źródło