পাইথনে গল্ফ করার জন্য এটি একটি টিপস প্রশ্ন, যা মূলত মূল বিষয়।
আমি পাইথনের একটি তালিকাতে খুব সাধারণ উপায়ে সবচেয়ে সংক্ষিপ্ততম উপায়ে সবচেয়ে সংক্ষিপ্ততম উপায় খুঁজছি। এখানে আমি যা চেষ্টা করেছি তা এখানে ধরে নিচ্ছি যে তালিকাটি ভেরিয়েবল নামে রয়েছে l
:
from statistics import*
mode(l)
যদি একাধিক মোড থাকে তবে এটি একটি ত্রুটি ফেলে দেয়।
max(l,key=l.count)
এটি কেবল 1 টি আইটেম ফেরত দেয়, আমার সর্বাধিক গণনার সমস্ত উপাদান পাওয়া দরকার ।
from collections import*
Counter(l).most_common()
এটি (element, count)
গণনা অনুসারে বাছাই করা tuples এর একটি তালিকা প্রদান করে। এ থেকে আমি সমস্ত উপাদানগুলিকে টানতে পারলাম যার সংশ্লিষ্ট গণনা প্রথমটির সমান, তবে আমি এর থেকে আরও ভাল গল্ফ করার কোনও উপায় দেখতে পাচ্ছি না:
from collections import*
c=Counter(l).most_common()
[s for s,i in c if i==c[0][1]]
আমি নিশ্চিত যে আরও একটি ছোট উপায় আছে!
এছাড়াও, যদি এটি ভেরিয়েবল অ্যাসাইনমেন্ট বা একাধিক ব্যবহার ছাড়াই করা যায় l
, তবে আমি আরও বাইটগুলি সংরক্ষণ করার জন্য বাকী কোডটি ল্যাম্বডা এক্সপ্রেশন হিসাবে রাখতে পারি।
সম্পাদনা: @ ইউরিলের পরামর্শ অনুসারে, আমরা এটি করতে পারি:
{s for s in l if l.count(s)==l.count(max(l,key=l.count))}
এবং আমি list.count
কয়েক বাইটের জন্য উপনাম করতে পারি :
c=l.count;{s for s in l if c(s)==c(max(l,key=c))}
@ ইউরিয়েল উল্লেখ করেছেন যে আমরা এর সাথে আরও কয়েকটি বাইট পেতে পারি map
:
c=l.count;{s for s in l if c(s)==max(map(c,l))}