Znajdź pierwszy element w sekwencji, który pasuje do predykatu

| | |

Chcę w sposób idiomatyczny znaleźć pierwszy element na liście, który pasuje do predykatu.

Obecny kod jest dość brzydki:

[x for x in seq if predicate(x)][0] 

Myślałem o zmianie na:

z itertools import dropwhile dropwhile(lambda x: not predicate(x), seq).next() 

Ale musi być coś bardziej eleganckiego... I byłoby miło, gdyby zwracała wartość Brak zamiast zgłaszać wyjątek, jeśli nie zostanie znalezione żadne dopasowanie.

Wiem, że mógłbym po prostu zdefiniować funkcję taką jak:

def get_first(predicate, seq): for i in seq : if predicate(i): return i return Brak 

Ale nie ma smaku zaczynać wypełnianie kodu funkcjami użytkowymi w ten sposób (a ludzie prawdopodobnie nie zauważą, że już tam są, więc mają tendencję do powtarzania się w czasie), jeśli istnieją wbudowane elementy, które już zapewniają to samo.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method