আমার কোড রয়েছে যা দেখতে কিছুটা এমন দেখাচ্ছে:
thing_index = thing_list.index(thing)
otherfunction(thing_list, thing_index)
ঠিক আছে তাই এটি সরলীকৃত তবে আপনি ধারণা পাবেন। এখন thing
সম্ভবত তালিকায় নাও থাকতে পারে, সেক্ষেত্রে আমি -1 পাস করতে চাই thing_index
। অন্যান্য ভাষায় এটি হ'ল আপনি index()
যদি ফিরে আসার প্রত্যাশা করেন যদি এটি উপাদানটি খুঁজে না পায়। আসলে এটি নিক্ষেপ করে ValueError
।
আমি এটি করতে পারি:
try:
thing_index = thing_list.index(thing)
except ValueError:
thing_index = -1
otherfunction(thing_list, thing_index)
তবে এটি নোংরা বোধ করে, ValueError
অন্য কোনও কারণে উত্থাপিত হতে পারে কিনা তা আমি জানি না । আমি জেনারেটর ফাংশনের উপর ভিত্তি করে নীচের সমাধানটি নিয়ে এসেছি তবে এটি কিছুটা জটিল বলে মনে হচ্ছে:
thing_index = ( [(i for i in xrange(len(thing_list)) if thing_list[i]==thing)] or [-1] )[0]
একই জিনিস অর্জন করার একটি ক্লিনার উপায় আছে? ধরে নেওয়া যাক তালিকাটি বাছাই করা হয়নি।
str.find
পদ্ধতি রয়েছে যা হুবহু এটি করে: ফিরে আসে -1
যখন সূচকে বিষয় পাওয়া যায় না।
str.index()
অনুসন্ধানের স্ট্রিংটি পাওয়া না গেলে একটি ব্যতিক্রম ছুঁড়ে ফেলে।
thing_index
।" - এটি অবশ্যই অ-পাইথোনিক। কোনও অপারেশন সফল না হওয়ার ক্ষেত্রে একটি (অর্থহীন) টোকেন মানটি সাফল্যজনক না হলে - ব্যতিক্রমগুলি এখানে সঠিক উপায়। বিশেষত যেহেতুthing_list[-1]
একটি বৈধ এক্সপ্রেশন, যার অর্থ তালিকার শেষ এন্ট্রি।