আপনার প্রথম প্রশ্নের হিসাবে: সেই কোডটি পুরোপুরি ঠিক আছে এবং যদি item
ভিতরের উপাদানগুলির মধ্যে একটির সমান হয় তবে তা কাজ করা উচিত myList
। হতে পারে আপনি এমন একটি স্ট্রিং সন্ধান করার চেষ্টা করেছেন যা আইটেমগুলির মধ্যে একটির সাথে ঠিক মেলে না বা সম্ভবত আপনি একটি ফ্লোট মান ব্যবহার করছেন যা অসম্পূর্ণতায় ভুগছে।
আপনার দ্বিতীয় প্রশ্ন হিসাবে: তালিকাগুলিতে জিনিসগুলি "সন্ধান" করতে পারলে আসলে বেশ কয়েকটি সম্ভাব্য উপায় রয়েছে।
ভিতরে কিছু আছে কিনা তা পরীক্ষা করা হচ্ছে
আপনি যে বর্ণনাটি বর্ণনা করেছেন এটি এটি: তালিকার অভ্যন্তরে কিছু রয়েছে কিনা তা পরীক্ষা করা হচ্ছে। আপনি যেমন জানেন, আপনি তার জন্য in
অপারেটরটি ব্যবহার করতে পারেন :
3 in [1, 2, 3] # => True
একটি সংগ্রহ ফিল্টার করছে
অর্থাত, একটি নির্দিষ্ট শর্ত পূরণ করে এমন ক্রমে সমস্ত উপাদান সন্ধান করা। আপনি তার জন্য তালিকা বোঝার বা জেনারেটরের এক্সপ্রেশন ব্যবহার করতে পারেন:
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
পরেরটি এমন একটি জেনারেটর ফিরিয়ে দেবে যা আপনি কল্পনা করতে পারেন এমন অলস তালিকার একটি তালিকা যা কেবল এটির মাধ্যমে পুনরাবৃত্তি হওয়ার সাথে সাথেই নির্মিত হবে। যাইহোক, প্রথমটি হুবহু সমান
matches = filter(fulfills_some_condition, lst)
পাইথন ২. এখানে আপনি কর্মক্ষেত্রে উচ্চ-অর্ডার ফাংশন দেখতে পারেন। পাইথন 3 এ, filter
কোনও তালিকা ফিরিয়ে দেয় না, তবে জেনারেটরের মতো বস্তু।
প্রথম ঘটনাটি সন্ধান করা
যদি আপনি কেবল শর্তের সাথে মেলে এমন প্রথম জিনিসটি চান (তবে এটি এখনও কী তা আপনি জানেন না) তবে লুপের জন্য সম্ভবত সম্ভবত এটির else
ধারাটি ব্যবহার করা ভাল, যা সত্যই সুপরিচিত নয়। আপনি ব্যবহার করতে পারেন
next(x for x in lst if ...)
যা প্রথম ম্যাচটি ফিরিয়ে দেবে বা StopIteration
যদি কিছু না পাওয়া যায় তবে একটি বাড়িয়ে তুলবে । বিকল্পভাবে, আপনি ব্যবহার করতে পারেন
next((x for x in lst if ...), [default value])
কোনও আইটেমের অবস্থান সন্ধান করা হচ্ছে
তালিকার জন্য, এর রয়েছে index
পদ্ধতি যে কখনও কখনও দরকারী যদি আপনি জানতে চান হতে পারে যেখানে একটি নির্দিষ্ট উপাদান তালিকা রয়েছে:
[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
তবে নোট করুন যে আপনার যদি সদৃশ থাকে তবে .index
সর্বদা সর্বনিম্ন সূচকটি প্রদান করে: ......
[1,2,3,2].index(2) # => 1
যদি সেখানে সদৃশ থাকে এবং আপনি সমস্ত সূচক চান তবে আপনি তার enumerate()
পরিবর্তে ব্যবহার করতে পারেন :
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
myList
।