2013-05-30 40 views
6

Mam listę elementów w python i sposób, aby sprawdzić, czy element jest ważny, czy nie. Muszę odrzucić całą listę, jeśli którykolwiek z jej elementów jest nieważny. Mogłem to zrobić:Szybki sposób na odrzucenie listy w Pythonie

def valid(myList): 
    for x in myList: 
     if isInvalid(x): 
      return False 
    return True 

Czy istnieje bardziej pythonowy sposób to zrobić? Możesz go filtrować, ale to by oceniło wszystkie pozycje na liście, przy ocenie tylko pierwszego może być wystarczająca (jeśli jest zła) ...

Dziękuję bardzo za pomoc.

Odpowiedz

14

Typowym sposobem, aby to zrobić jest użycie wbudowanego any funkcji z wyrażeniem generatora

if any(isInvalid(x) for x in myList): 
    #reject 

Składnia jest czysty i elegancki i masz to samo zachowanie Zwarcie że trzeba było na swojej pierwotnej funkcji .

+0

Nice !, Nie wiedziałem o takich rzeczach! – gt6989b

+0

To nie powinno być ". –

+0

@AshwiniChaudhary - Wolę zmienić logikę programu. Jeśli którakolwiek z nich jest nieważna, odrzuć listę (zamiast aktualnego OP - jeśli nie jest ona nieprawidłowa, zachowaj listę). Ale to jest ostatecznie do OP do podjęcia decyzji :) – mgilson