Listy składane (comprehension list) w pythonie i pobranie pierwszego pasującego elementu.

Data publikacji: 2017-07-10 | Tagi:

Załóżmy następującą sytuację: mamy listę elementów typu int lub str. Chcemy przeiterować po tej liście by odnaleźć pierwszy element typu str. Rozwiązanie jest w miarę proste:

result = None
l = [1, '3', 9, '2']

for element in l:
    if isinstance(element, str):
        result = element
        break

W zmiennej result powinna znaleźć się wartość "3".

Jednak można to zrobić ładniej :).

Na przykład korzystając z funkcji next.

l = [1, '3', 9, '2']

result = next((element for element in l if isinstance(element, str)), None)

Tym zapisem symulujemy break w pętli for. Funkcja next pozwala zakończyć swoje wykonywanie tuż po tym, gdy trafi w element spełniający kryteria.

Wartość domyślna (None) została użyta po to, by jeśli na liście nie będzie elementów typu str, wykonywanie nie zakończyło się rzuceniem wyjątku StopIteration.


Oceń ten post:
Podziel się:

comments powered by Disqus

IT w obrazkach: