2013-02-13 11 views

Odpowiedz

13
all(predicate(x) for x in string) 
+0

... i to nie tylko najkrótsze, ale najbardziej skuteczne jeden, bo a) jest za pomocą generator i b) 'all()', więc iteracja zatrzymuje się przy pierwszym predykacie 'False'. –

2
all(map(predicate, string)) 

Funkcjonalnie taka sama jak @ odpowiedź Abe, ale na mapie zamiast (także leniwy w python3)

+0

Wadą tego podejścia jest to, że 'predicate (x)' jest czymś w rodzaju 'x [0]', w którym to przypadku do korzystania z mapy potrzebny jest moduł lambda lub operator. –

+0

Zgadzam się, masz tę wadę (dodając 8 liter), gdy predykatu nie można wywołać, ale masz tę zaletę, że zastępujesz mapę leniwym wprowadzeniem mapy (lub jakiejkolwiek innej implementacji), jeśli na przykład predykat jest obciążający obliczeniowo. – SlimJim

Powiązane problemy