পাইথনে, আমি ল্যাম্বদা দিয়ে তারিখ অনুসারে বাছাই করার চেষ্টা করছি। আমি আমার ত্রুটির বার্তাটি বুঝতে পারি না। বার্তাটি হ'ল:
<lambda>() takes exactly 1 argument (2 given)
আমার কাছে লাইনটি
a = sorted(a, lambda x: x.modified, reverse=True)
পাইথনে, আমি ল্যাম্বদা দিয়ে তারিখ অনুসারে বাছাই করার চেষ্টা করছি। আমি আমার ত্রুটির বার্তাটি বুঝতে পারি না। বার্তাটি হ'ল:
<lambda>() takes exactly 1 argument (2 given)
আমার কাছে লাইনটি
a = sorted(a, lambda x: x.modified, reverse=True)
উত্তর:
ব্যবহার
a = sorted(a, key=lambda x: x.modified, reverse=True)
# ^^^^
পাইথন ২.x এ, sorted
ফাংশনটি এই ক্রমে তার আর্গুমেন্ট গ্রহণ করে:
sorted(iterable, cmp=None, key=None, reverse=False)
সুতরাং ছাড়া key=
, আপনি যে ফাংশনটি পাস করবেন এটি একটি cmp
ফাংশন হিসাবে বিবেচিত হবে যা 2 টি আর্গুমেন্ট নেয়।
lambda
অন্য প্যারামিটার সরবরাহ করছে যেহেতু কোনও cmp
ফাংশন 2 নেয়?
cmp
, একটি তুলনামূলক ফাংশন দুটি আর্গুমেন্ট লাগে। আপনি যদি পাস করে যাচ্ছেন তা যদি নির্দিষ্ট না key
করে থাকেন তবে এটি ফাংশন পরামিতিগুলির অর্ডার থেকে ধরে নেওয়া হয় যে আপনি কোনও তুলনামূলক পাস করছেন। আপনার ল্যাম্বদা একটি প্যারামিটার নেয়, সুতরাং এটি কোনও বৈধ তুলনাকারী নয় এবং ত্রুটিটি এটিই বলে।
lst = [('candy','30','100'), ('apple','10','200'), ('baby','20','300')]
lst.sort(key=lambda x:x[1])
print(lst)
এটি নিম্নলিখিত হিসাবে মুদ্রণ করা হবে:
[('apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')]
পাইথন তালিকাগুলিতে ডেটা বাছাই করার দুটি অন্তর্নির্মিত উপায় রয়েছে:
sort() — A method that modifies the list in-place
sorted() — A built-in function that builds a new sorted list from an iterable
আপনার প্রয়োজনের ভিত্তিতে আপনি এই দুটিয়ের মধ্যে চয়ন করতে পারেন:
আপনি যদি মূল তালিকা রাখতে চান তবে আপনি বাছাই করা ফাংশন ব্যবহার করতে পারেন বা যদি আপনার মূল তালিকার প্রয়োজন না হয় তবে আপনি বাছাই করুন ফাংশন ব্যবহার করতে পারেন।
বাছাই বা সাজানোর আগে, আমাদের ল্যাম্বডা বুঝতে হবে।
একটি ল্যাম্বদা একটি বেনামি ফাংশন এবং একটি বেনামি ফাংশন এমন একটি ফাংশন যা নাম ছাড়াই সংজ্ঞায়িত করা হয়, এই পোস্টটি এটি বেশ সুন্দরভাবে ব্যাখ্যা করেছে বলে মনে হচ্ছে।
https://www.programiz.com/python-programming/anonymous-function
ল্যাম্বদা ফাংশনগুলি ইন-লাইন কল করার জন্য দুর্দান্ত কারণ তাদের কেবলমাত্র একটি এক্সপ্রেশন রয়েছে যা মূল্যায়ন এবং ফিরে পাওয়া যায়। ল্যাম্বদার জন্য এগুলি সিনট্যাক্সটি হ'ল:
লাম্বদা আর্গুমেন্ট: এক্সপ্রেশন
সাজানো ফাংশন কীভাবে ব্যবহার করতে হয় তা দেখুন:
student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2])
আউটপুট: [('ডেভ', 'বি', 10), ('জেন', 'বি', 12), ('জন', 'এ', 15)]
এখানে আমরা দেখতে পাচ্ছি তালিকার ছাত্র_তুপলগুলি রয়েছে শিক্ষার্থী মূল পরামিতির উপর ভিত্তি করে সাজানো হয়েছে [২]।