मुझे यकीन है कि ऐसा करने का एक सरल तरीका है जो मुझे नहीं हो रहा है।
मैं उन तरीकों का एक गुच्छा कह रहा हूं जो एक सूची लौटाते हैं। सूची खाली हो सकती है। यदि सूची गैर-रिक्त है, तो मैं पहला आइटम वापस करना चाहता हूं; अन्यथा, मैं कोई नहीं लौटना चाहता। यह कोड काम करता है:
my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None
ऐसा लगता है कि ऐसा करने के लिए एक सरल एक-मुहावरा होना चाहिए, लेकिन मेरे जीवन के लिए मैं इसके बारे में सोच भी नहीं सकता। है?
संपादित करें:
कारण यह है कि मैं यहां एक-लाइन अभिव्यक्ति की तलाश कर रहा हूं, ऐसा नहीं है कि मुझे अविश्वसनीय रूप से कोड पसंद है, लेकिन क्योंकि मुझे इस तरह के बहुत सारे कोड लिखने हैं:
x = get_first_list()
if x:
# do something with x[0]
# inevitably forget the [0] part, and have a bug to fix
y = get_second_list()
if y:
# do something with y[0]
# inevitably forget the [0] part AGAIN, and have another bug to fix
मैं जो करना चाहता हूं वह निश्चित रूप से एक समारोह के साथ पूरा किया जा सकता है (और शायद होगा):
def first_item(list_or_none):
if list_or_none: return list_or_none[0]
x = first_item(get_first_list())
if x:
# do something with x
y = first_item(get_second_list())
if y:
# do something with y
मैंने सवाल पोस्ट किया क्योंकि मैं अक्सर आश्चर्यचकित हूं कि पायथन में सरल अभिव्यक्तियां क्या कर सकती हैं, और मुझे लगा कि एक फ़ंक्शन लिखना एक मूर्खतापूर्ण बात थी अगर कोई सरल अभिव्यक्ति कर सकता था, तो वह कर सकता था। लेकिन इन उत्तरों को देखकर ऐसा लगता है एक समारोह की तरह है सरल उपाय।
next(iter(your_list))
, क्योंकि यदि आप दूसरे तर्क की आपूर्ति iter
करते हैं, तो आप इसे बता रहे हैं कि पहला तर्क कॉल करने योग्य है।
next(iter(your_list), None)
बजाय उपयोग कर सकते हैं ( और हमेशा एक पुन: चलने योग्य नहीं होना चाहिए)।first_item(your_list)
your_list
None
get_first_list()
get_second_list()