এটি করার সর্বোত্তম উপায় হ'ল তালিকাগুলি বাছাই করা এবং তাদের তুলনা করা। (ব্যবহার করা Counter
হ্যাশযোগ্য নয় এমন বস্তুর সাথে কাজ করবে না)) এটি পূর্ণসংখ্যার জন্য সোজা:
sorted(a) == sorted(b)
এটি স্বেচ্ছাসেবী বিষয়গুলির সাথে একটি সামান্য কৌশলযুক্ত হয়। যদি আপনি অবজেক্টের পরিচয় সম্পর্কে উদ্বিগ্ন হন, অর্থাত্, উভয় তালিকায় একই জিনিসগুলি রয়েছে কিনা , আপনি id()
সারণি কী হিসাবে ফাংশনটি ব্যবহার করতে পারেন ।
sorted(a, key=id) == sorted(b, key==id)
(পাইথন ২.x-এ আপনার আসলে key=
প্যারামিটারের দরকার নেই , কারণ আপনি যে কোনও বস্তুর সাথে যে কোনও বস্তুর তুলনা করতে পারেন The ক্রমটি নির্বিচারে তবে স্থিতিশীল, তাই এটি এই উদ্দেশ্যে কার্যকর হয়; বস্তুগুলি কী আদেশ তা বিচার্য নয়) ইন, কেবলমাত্র উভয় তালিকার জন্য ক্রম একই। পাইথন 3 এ যদিও বিভিন্ন ধরণের অবজেক্টের তুলনা করা অনেক পরিস্থিতিতে অনুমোদিত নয় - উদাহরণস্বরূপ, আপনি স্ট্রিজকে পূর্ণসংখ্যার সাথে তুলনা করতে পারবেন না - সুতরাং যদি আপনার কাছে বস্তু থাকে বিভিন্ন ধরণের, স্পষ্টভাবে অবজেক্টের আইডি ব্যবহার করা ভাল best)
আপনার দ্বারা তালিকায় বস্তু তুলনা করতে চান তাহলে মান, অপরপক্ষে, প্রথমে আপনার অবজেক্টের জন্য কি "VALUE" মানে সংজ্ঞায়িত করা প্রয়োজন। তারপরে আপনার কীটি (এবং পাইথন 3 এর জন্য, ধারাবাহিক প্রকার হিসাবে) সরবরাহ করার জন্য কিছু উপায়ের প্রয়োজন হবে। একটি প্রচলিত উপায় যা প্রচুর স্বেচ্ছাচারিত বস্তুর জন্য কাজ করে তা হ'ল তাদের অনুসারে বাছাই করা repr()
। অবশ্যই, এটি repr()
বৃহত তালিকার জন্য আরও অনেক বেশি সময় এবং মেমরির বিল্ডিংয়ের স্ট্রিংগুলি নষ্ট করতে পারে ।
sorted(a, key=repr) == sorted(b, key==repr)
যদি বস্তুগুলি আপনার নিজস্ব সমস্ত ধরণের হয় তবে আপনি সেগুলির __lt__()
উপরে সংজ্ঞা দিতে পারেন যাতে অবজেক্টটি কীভাবে নিজেকে অন্যের সাথে তুলনা করতে পারে তা জানে। তারপরে আপনি কেবল সেগুলি বাছাই করতে পারেন এবং key=
প্যারামিটার সম্পর্কে চিন্তা করবেন না । অবশ্যই আপনি সংজ্ঞা __hash__()
এবং ব্যবহার করতে পারেন Counter
, যা দ্রুত হবে।