Zoek het eerste element in een reeks die overeenkomt met een predikaat

| | |

Ik wil een idiomatische manier om het eerste element in een lijst te vinden dat overeenkomt met een predikaat.

De huidige code is nogal lelijk:

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

Ik heb erover nagedacht om het te veranderen in:

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

Maar er moet iets eleganters zijn... En het zou leuk zijn als het een Geen waarde retourneert in plaats van een uitzondering te maken als er geen overeenkomst wordt gevonden.

Ik weet dat ik gewoon een functie zou kunnen definiëren als:

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

Maar het is nogal smakeloos om de code te gaan vullen met hulpprogramma's zoals deze (en mensen zullen waarschijnlijk niet merken dat ze er al zijn, dus ze hebben de neiging om in de loop van de tijd te worden herhaald) als er ingebouwde ins zijn die al hetzelfde bieden.

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