2012-02-21 19 views
52

Nesneler listemin belirli bir özellik değerine sahip bir nesne içerip içermediğini kontrol etmek istiyorum.Nesne Listesi'nin belirli bir özellik değeri olan bir nesne içerip içermediğini kontrol edin

class Test: 
    def __init__(self, name): 
     self.name = name 

# in main() 
l = [] 
l.append(Test("t1")) 
l.append(Test("t2")) 
l.append(Test("t2")) 

Örneğin listenin t1 isminde bir nesne içerip içermediğini kontrol etmenin bir yolunu istiyorum. Nasıl yapılabilir? Ben sadece gidecekseniz 1 örneği maçları hangi olmadığını bilmek gerekir, 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 

Ben bütün liste her şey geçmesi istemiyorum bulundu. first(...) veya any(...) veya başka bir şey yapacak mı?

+0

'first()' işlevi, 'next()' adlı yerleşik olarak kullanılabilir. –

cevap

84

documentation'dan kolayca görebileceğiniz gibi, any() işlevi kısa devreler eşleşme bulunduğunda, True döndürür.

any(x.name == "t2" for x in l) 
İlgili konular