যার তালিকা (f) (আইটেম) সবচেয়ে ছোট তার তালিকায় আইটেমটি কীভাবে সন্ধান করবেন?


10

আমার একটি তালিকা lএবং একটি ফাংশন রয়েছে ffকঠোরভাবে বৃদ্ধি বা হ্রাস না। f(item)সবচেয়ে ছোটটি তালিকার আইটেমটি কীভাবে খুঁজে পাব? উদাহরণস্বরূপ, আসুন এই তালিকাটি বলা যাক:

l = [1, 2, 3, 4]

এবং list(f(x)for x in l)হ'ল:

[2, 9, 0, 3]

f(3)অন্য যে কোনও একটির তুলনায় চ ছোট, তাই এটি "3" মুদ্রণ করা উচিত। এটি করার সবচেয়ে সংক্ষিপ্ততম উপায় কী? আমি প্রথমে চেষ্টা করেছি:

min(f(x) for x in l)

কিন্তু এই দেয় 0, না 3। আমি যদি ব্রাভিটি নয়, পাঠযোগ্যতার জন্য শুটিং করতাম তবে আমি করতাম:

index = 0
smallest = f(l[0])
for i in range(len(l)):
    value = f(l[i])
    if value < smallest:
        smallest = value
        index = i

এটি সূক্ষ্ম, তবে কোড-গল্ফের জন্য ভয়ঙ্কর। এমনকি যদি এটি গল্ফ ছিল

i,s=0,f(l[0])
for x in range(len(l)):
 v=f(l[x])
 if v<s:s,i=v,x

এটি একটি খারাপ সমাধান। সবচেয়ে ছোট সমাধানটি আমি ভাবতে পারি তা হ'ল:

g=[f(x)for x in l];print(l[g.index(min(g))])

(৪৪ বাইট) আরও কীভাবে আমি এটিকে গল্ফ করতে পারি?


8
শুধু min(l,key=f)
ভোল্টাহ

2
@ উত্তরত পোস্ট করুন উত্তর হিসাবে।
NoOneIs এখানে

4
@ কেভিনলউ- notKenny এটি একটি টিপস প্রশ্ন। এটি অন-টপিক।
NoOneIs এখানে

2
@ ট্রাইচোপলাক্স আসলে আমি মনে করি এটি এটি: মেটা কোডেগল্ফ.স্ট্যাকেক্সেঞ্জোংটা
/

2
এটি একটি মজার বিষয়। সম্ভবত এটিকে সাধারণ করে তোলেন, পাইথনে সীমাবদ্ধ নয়? এটি বিভিন্ন ভাষায় কীভাবে করা যায় তা দেখতে আকর্ষণীয় হতে পারে
লুইস মেন্ডো

উত্তর:


10

এর keyসম্পত্তি ব্যবহার করুনmin

যেমন @vaultah বলেছেন, ব্যবহার করুন min(l,key=f)min(l,key=f)ন্যূনতম লাগে f(i)জন্য iমধ্যে l

এটি প্রয়োগ করাও সম্ভব max, এবং sorted। উদাহরণস্বরূপ, max(l,key=f)সর্বোচ্চf(i) জন্য iমধ্যে l। জন্য sorted, ব্যবহারের হবে: sorted(l,key=f)


1
আমি আপাতত এটি গ্রহণ করছি, তবে @vaultah এর কোনও উত্তর তিনি যদি পোস্ট করেন তবে তা গ্রহণ করব।
জেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.