পাইথনের একটি তালিকার সর্বাধিক সাধারণ উপাদান


13

পাইথনে গল্ফ করার জন্য এটি একটি টিপস প্রশ্ন, যা মূলত মূল বিষয়।

আমি পাইথনের একটি তালিকাতে খুব সাধারণ উপায়ে সবচেয়ে সংক্ষিপ্ততম উপায়ে সবচেয়ে সংক্ষিপ্ততম উপায় খুঁজছি। এখানে আমি যা চেষ্টা করেছি তা এখানে ধরে নিচ্ছি যে তালিকাটি ভেরিয়েবল নামে রয়েছে 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))}

সম্পর্কিত , তবে আমার যা প্রয়োজন তা করেন না
musicman523

উত্তর:


5

এটা কেমন?

c=l.count;{x for x in l if c(x)==max(map(c,l))}

মধ্যে ঘিরা [*...]একটি তালিকা পাবেন।


ওহ ঠিক আছে, আমার একটি অনন্য তালিকা বা সেট লাগবে, ধন্যবাদ
সঙ্গীতকার 523

@ musicman523 আপনি কেন আপডেট করলেন l.count(max(l,key=l.count))? max(map(l.count,l))সংক্ষিপ্ত
উরিল

আহহহ, আমি সেটার কথা ভাবিনি, ধন্যবাদ!
musicman523
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.