Trova il primo elemento in una sequenza che corrisponde a un predicato

| | |

Voglio un modo idiomatico per trovare il primo elemento in una lista che corrisponda a un predicato.

Il codice corrente è piuttosto brutto:

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

Ho pensato di cambiarlo in:

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

Ma ci deve essere qualcosa di più elegante... E sarebbe bello se restituisce un valore Nessuno piuttosto che sollevare un'eccezione se non viene trovata alcuna corrispondenza.

So che potrei semplicemente definire una funzione come:

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

Ma è abbastanza insipido iniziare a riempire il codice con funzioni di utilità come questa (e le persone probabilmente non noteranno che sono già lì, quindi tendono a ripetersi nel tempo) se ci sono built-in che forniscono già lo stesso.

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