আমার নিম্নলিখিত ফাংশনটি প্রয়োজন:
ইনপুট : কlist
আউটপুট :
True
যদি ইনপুট তালিকার সমস্ত উপাদান মান সমতা অপারেটরটি ব্যবহার করে একে অপরের সমান হিসাবে মূল্যায়ন করে;False
অন্যথায়।
পারফরম্যান্স : অবশ্যই, আমি কোনও অপ্রয়োজনীয় ওভারহেড ব্যয় করতে পছন্দ করি না।
আমি মনে করি এটি সবচেয়ে ভাল হবে:
- তালিকা মাধ্যমে পুনরাবৃত্তি
- সংলগ্ন উপাদানগুলির তুলনা করুন
- এবং
AND
সমস্ত ফলস্বরূপ বুলিয়ান মান
তবে আমি নিশ্চিত নই যে এটি করার সর্বাধিক পাইথোনিক উপায়।
সংক্ষিপ্ত-সার্কিট বৈশিষ্ট্যের অভাব কেবলমাত্র দীর্ঘ ইনপুট (50 ডলারের বেশি উপাদান) -এর উপর ব্যাথা দেয় যা প্রথমদিকে অসম উপাদান রয়েছে। যদি এটি প্রায়শই পর্যাপ্ত পরিমাণে ঘটে থাকে (কতক্ষণ তালিকাগুলি হতে পারে তার উপর কতক্ষণ নির্ভর করে), শর্ট সার্কিটের প্রয়োজন। সেরা শর্ট সার্কিট অ্যালগরিদমটি @ কেনিটিএম বলে মনে হচ্ছে checkEqual1
। এটি প্রদান করে তবে এর জন্য একটি উল্লেখযোগ্য ব্যয়:
- প্রায়-অভিন্ন তালিকাতে 20x পর্যন্ত কার্য সম্পাদন
- সংক্ষিপ্ত তালিকায় কর্মক্ষমতা 2.5x পর্যন্ত in
যদি প্রাথমিক অসম উপাদানগুলির সাথে দীর্ঘ ইনপুটগুলি না ঘটে (বা পর্যাপ্তভাবে খুব কম ঘটে) তবে শর্ট সার্কিটের প্রয়োজন হবে না। তারপরে, এখন পর্যন্ত সবচেয়ে দ্রুততম হল @ আইভো ভ্যান ডের উইজক সমাধান।
functools.reduce(operator.eq, a)
মতো পরামর্শ দেওয়া হয়নি।
a == b
বা হিসাবে অভিন্নa is b
?