Zakładając, że mam listę z ogromną liczbą przedmiotów.python: pobierz numer pozycji z listy (sekwencja) z pewnym warunkiem
l = [ 1, 4, 6, 30, 2, ... ]
Chcę uzyskać liczbę elementów z tej listy, gdzie element powinien spełniać pewne warunki. Moją pierwszą myślą było:
count = len([i for i in l if my_condition(l)])
Ale jeśli my_condition() filtruje lista ma również dużą liczbę elementów, myślę, że tworząc nową listę dla przefiltrowanej wyniku jest tylko marnowanie pamięci. Dla efektywności, IMHO, powyżej połączenie nie może być lepiej niż:
count = 0
for i in l:
if my_condition(l):
count += 1
Czy jest jakiś sposób funkcjonalny styl osiągnąć, aby uzyskać # elementów, które spełniają określone warunki, nie generując tymczasową listę?
Z góry dziękuję.
Wybór między generatorami i listami jest wyborem czasu wykonania i zużycia pamięci. Byłbyś zaskoczony, jak często wyniki są sprzeczne z intuicją, jeśli profilujesz kod. Przedwczesna optymalizacja jest źródłem wszelkiego zła. –