সমস্যা বিবরণ
একটি শব্দের লিস্ট দেওয়া আছে। সেখান থেকে দৈর্ঘ্য অনুযায়ী শীর্ষ kটি সবচেয়ে লম্বা শব্দ বের করতে হবে।
পদ্ধতি ১: count() এবং sorted() ব্যবহার
sorted(l, key=lambda i: (len(i), next(c)), reverse=True)[:x] দিয়ে সর্ট করে স্লাইস করুন।
from itertools import count
def longwords(l, x):
c = count()
return sorted(l, key=lambda i: (len(i), next(c)), reverse=True)[:x]
listA = ['Earth', 'Moonshine', 'Aurora', 'Snowflakes', 'Sunshine']
n = 2
print(longwords(listA, n)) # ['Snowflakes', 'Moonshine']
পদ্ধতি ২: zip() এবং enumerate() ব্যবহার
enumerate দিয়ে ইনডেক্স নিন, sorted দিয়ে নেগেটিভ লেন্থ দিয়ে রিভার্স সর্ট করুন, zip দিয়ে আলাদা করুন।
def longwords(l, x):
idx, words = zip(*sorted(enumerate(l), key=lambda i: (-len(i[1]), -i[0]))[:x])
return list(words)
listA = ['Earth', 'Moonshine', 'Aurora', 'Snowflakes', 'Sunshine']
n = 2
print(longwords(listA, n)) # ['Snowflakes', 'Moonshine']