मैं एक सूची में पहला तत्व ढूंढना चाहता हूं जो एक विधेय से मेल खाता हो।
वर्तमान कोड काफी बदसूरत है:
[x for x in seq if predicate(x)][0]
मैंने इसे बदलने के बारे में सोचा है:
from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()
लेकिन कुछ और अधिक सुरुचिपूर्ण होना चाहिए ... और यह अच्छा होगा None
यदि कोई मैच नहीं मिला है तो एक अपवाद को बढ़ाने के बजाय एक मूल्य लौटाता है।
मुझे पता है कि मैं सिर्फ एक फ़ंक्शन को परिभाषित कर सकता हूं:
def get_first(predicate, seq):
for i in seq:
if predicate(i): return i
return None
लेकिन इस तरह से उपयोगिता कार्यों के साथ कोड भरना शुरू करना काफी बेस्वाद है (और लोग शायद ध्यान नहीं देंगे कि वे पहले से ही वहां हैं, इसलिए वे समय के साथ दोहराए जाते हैं) अगर वहाँ पहले से ही प्रदान करने वाले इंस निर्मित किए जाते हैं।