Je veux vérifier si ma liste d'objets contient un objet avec une certaine valeur d'attribut.
class Test:
def __init__(self, name):
self.name = name
# in main()
l = []
l.append(Test("t1"))
l.append(Test("t2"))
l.append(Test("t2"))
Je veux un moyen de vérifier si la liste contient un objet avec un nom "t1"
par exemple. Comment ceci peut être fait? J'ai trouvé 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
Je ne veux pas parcourir toute la liste à chaque fois, j'ai juste besoin de savoir s'il y a une instance qui correspond. Est-ce que first(...)
ou any(...)
ou quelque chose d'autre fera cela?
python
list
attributes
any
Jiew Meng
la source
la source
first()
fonction est disponible sous la forme d'un appel intégrénext()
.Réponses:
Comme vous pouvez facilement le voir dans la documentation , la
any()
fonction court-circuite un retourTrue
dès qu'une correspondance a été trouvée.la source