Saya ingin cara idiomatis untuk menemukan elemen pertama dalam daftar yang cocok dengan predikat.
Kode saat ini sangat jelek:
[x for x in seq if predicate(x)][0]
Saya sudah berpikir untuk mengubahnya menjadi:
from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()
Tapi pasti ada sesuatu yang lebih elegan ... Dan alangkah baiknya jika mengembalikan None
nilai daripada menaikkan pengecualian jika tidak ada kecocokan yang ditemukan.
Saya tahu saya bisa mendefinisikan fungsi seperti:
def get_first(predicate, seq):
for i in seq:
if predicate(i): return i
return None
Tetapi cukup hambar untuk mulai mengisi kode dengan fungsi-fungsi utilitas seperti ini (dan orang-orang mungkin tidak akan menyadari bahwa mereka sudah ada di sana, sehingga mereka cenderung untuk diulangi dari waktu ke waktu) jika ada seluk-beluk internal yang sudah menyediakan hal yang sama.