Encontre o primeiro elemento em uma sequência que corresponda a um predicado

| | |

Quero uma maneira idiomática de encontrar o primeiro elemento em uma lista que corresponda a um predicado.

O código atual é bastante feio:

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

Pensei em mudar para:

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

Mas deve haver algo mais elegante... E seria bom se retornasse um valor Nenhum em vez de gerar uma exceção se nenhuma correspondência for encontrada.

Eu sei que poderia definir uma função como:

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

Mas é muito ruim começar a preencher o código com funções utilitárias como esta (e as pessoas provavelmente não perceberão que elas já estão lá, então eles tendem a se repetir ao longo do tempo) se houver built-ins que já fornecem o mesmo.

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