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?
first()
Funkcja jest dostępna jako wbudowany nazywanext()
.