আমি নিশ্চিত যে এটি করার একটি সহজ উপায় আছে যা আমার কাছে ঘটে না।
আমি এমন একটি পদ্ধতিতে কল করছি যা একটি তালিকা ফিরিয়ে দেয়। তালিকাটি খালি থাকতে পারে। যদি তালিকাটি খালি না হয় তবে আমি প্রথম আইটেমটি ফিরিয়ে দিতে চাই; অন্যথায়, আমি কেউই ফিরিয়ে দিতে চাই না এই কোডটি কাজ করে:
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()