পাইথনের ল্যাম্বডা, মানচিত্র, ফিল্টার এবং হ্রাস করার ব্যাখ্যা

উত্স নোড: 1172017

এই নিবন্ধটি একটি অংশ হিসাবে প্রকাশিত হয়েছিল ডেটা সায়েন্স ব্লগাথন

ভূমিকা

হ্যালো মানুষ. আপনি কি কখনও পাইথনের ল্যাম্বডা, মানচিত্র, ফিল্টার এবং হ্রাসে বিভ্রান্ত হয়েছেন? হুহ? কোন চিন্তা নেই, আমি তোমাকে কভার করেছি। এই নিবন্ধে, আমরা আপনার হতে পারে এমন সমস্ত বিভ্রান্তি পরিষ্কার করব। বিশেষ করে, এই নিবন্ধটি পড়ার পরে, আপনি জানতে পারবেন:

  • কি Lambda, মানচিত্র, ফিল্টার, এবং হ্রাস?
  • কেন আমরা কি Lambda, Map, Filter, and Reduce ব্যবহার করি?
  • কিভাবে ল্যাম্বডা, মানচিত্র, ফিল্টার এবং হ্রাস ব্যবহার করতে?
  • কখন ল্যাম্বডা, মানচিত্র, ফিল্টার এবং হ্রাস ব্যবহার করতে?

আপনার যদি এই বিষয়ে কোনো বিভ্রান্তি না থাকে, আপনি সরাসরি সারাংশ বিভাগে যেতে পারেন।

সুচিপত্র

  1. ল্যামডা
  2. মানচিত্র
  3. ফিল্টার
  4. হ্রাস করা
  5. সারাংশ
  6. শেষটীকা

ল্যামডা

Lambda হল পাইথনের একটি কীওয়ার্ড যা ফাংশনকে সংজ্ঞায়িত করতে ব্যবহৃত হয়, আরও নির্দিষ্টভাবে বেনামী ফাংশন, এবং এই ধরনের ফাংশনগুলি ল্যাম্বডা ফাংশন বা ল্যাম্বডা এক্সপ্রেশন নামে পরিচিত।

এখানে একটি ল্যাম্বডা ফাংশন সংজ্ঞায়িত করার জন্য একটি সিনট্যাক্স আছে।

ল্যাম্বডা আর্গুমেন্টস: এক্সপ্রেশন

আসুন এটি একটি উদাহরণ দিয়ে বুঝতে পারি।

যদি আমি আপনাকে একটি সংখ্যা বর্গ করার জন্য একটি ফাংশন লিখতে বলি? আপনি সম্ভবত নিম্নলিখিত মত কিছু লিখতে হবে:

def স্কোয়ার(n): রিটার্ন n ** 2

উপরে দেখানো কোডটি স্ব-ব্যাখ্যামূলক এবং পাইথনিক নয়। এটিকে পাইথনিক করার জন্য আমাদের সেখানে ল্যাম্বডা ফাংশন রয়েছে। ল্যাম্বডা ব্যবহার করে বর্গাকার সমতুল্য ফাংশনটি নিম্নরূপ:

বর্গ = ল্যাম্বডা n: n ** 2

এখনও বিক্রয়ের জন্য n ** 2 প্রথমে মূল্যায়ন করা হয় এবং একটি মান শনাক্তকারীর কাছে ফিরে আসে বর্গক্ষেত্র. শনাক্তকারী বর্গক্ষেত্র এখন একটি ফাংশন হিসাবে কাজ করতে পারে, এবং এইভাবে আমরা একটি সংখ্যার বর্গ বের করার জন্য একটি যুক্তি হিসাবে যেকোনো সংখ্যা পাস করতে পারি।

# কলিং ল্যাম্বডা ফাংশন স্কোয়ার(5)
# আউটপুট: 25

আমরা শর্তসাপেক্ষ বিবৃতি যোগ করে ল্যাম্বডা ফাংশন প্রসারিত করতে পারি। নিম্নলিখিত স্ব-ব্যাখ্যামূলক উদাহরণ পড়ুন।

ম্যাক্সি = ল্যাম্বডা x, y: x যদি x > y অন্য y ম্যাক্সি(4, 6)
# আউটপুট: 6

সুতরাং, এটি ল্যাম্বডা ব্যবহার করে আপনার কোড পাইথনিক তৈরি করার বিষয়ে। কিন্তু ল্যাম্বডা যে সব করে তা নয়। এটি প্রায়শই ফাংশন মোড়ক তৈরি করতে ব্যবহৃত হয়, যেমন পাইথনের ডেকোরেটর. নিম্নরূপ একটি উদাহরণ.

def transform(n): ফেরত lambda x: x + n f = transform(3) f(4) # আউটপুট: 7 (3 + 4)

সার্জারির রুপান্তর ফাংশন একটি সংখ্যা নেয় এবং ল্যাম্বডা এক্সপ্রেশন/ফাংশন প্রদান করে। Lambda ফাংশন আরও দুটি সংখ্যা যোগ করে, x এবং n.

ল্যাম্বডা ফাংশনের সীমাবদ্ধতা হল যে তাদের যেকোনো সংখ্যক আর্গুমেন্ট থাকতে পারে কিন্তু শুধুমাত্র একটি অভিব্যক্তি.

ল্যাম্বডা ফাংশনগুলি প্রধানত ইন-প্লেস ফাংশন হিসাবে মানচিত্রের ফাংশনগুলির সাথে ব্যবহৃত হয়। সুতরাং, আসুন মানচিত্র ফাংশন আলোচনা করা যাক.

মানচিত্র

আমি যদি আপনাকে প্রথম পাঁচটি বিজোড় সংখ্যার একটি বর্গ বের করতে বলি তাহলে কী হবে। আপনি সম্ভবত নিম্নলিখিত মত কিছু লিখতে হবে:

বর্গাকার = [] পরিসরে n এর জন্য (1, 10, 2): squares.append(n ** 2)

লুপটি 1 থেকে 10 এর মধ্যে 2 এর ধাপের আকার সহ পুনরাবৃত্তি করে এবং প্রতিটি সংখ্যার বর্গকে যুক্ত করে স্কোয়ার. উপরে দেখানো পদ্ধতিটি তালিকা বোঝার ব্যবহার করে উন্নত করা যেতে পারে তবে এটিও লুপের জন্য ব্যবহার করবে। সুতরাং, একটি আছে দ্রুত লুপের জন্য স্পষ্ট ব্যবহার না করে একই কাজ করার উপায়। পাইথনের মানচিত্র ফাংশন এটি করে। এটি প্রদত্ত অবস্থার উপর ভিত্তি করে প্রদত্ত পুনরাবৃত্তিযোগ্য রূপান্তরিত করে।

মানচিত্র ফাংশনের জন্য সিনট্যাক্স নিম্নরূপ:

মানচিত্র (ফাংশন, পুনরাবৃত্তিযোগ্য)

মানচিত্রের ফাংশনটি ক ক্রিয়া এবং একটি পুনরাবৃত্ত(তালিকা, টুপল, ইত্যাদি) একটি ইনপুট হিসাবে; একটি পুনরাবৃত্তিযোগ্য প্রতিটি আইটেমের জন্য পাস ফাংশন প্রয়োগ করে এবং একটি মানচিত্র বস্তু (একটি পুনরাবৃত্তিকারী) প্রদান করে।

মানচিত্র ফাংশন ব্যবহার করে উপরের উদাহরণটি পুনরায় প্রয়োগ করা যাক।

def স্কোয়ার(n): রিটার্ন n ** 2 স্কোয়ার = মানচিত্র(বর্গ, পরিসীমা(1, 10, 2)) স্কোয়ার # রিটার্ন ম্যাপ অবজেক্ট লিস্ট(স্কোয়ার) # আউটপুট: [1, 9, 25, 49, 81]

সার্জারির বর্গক্ষেত্র ফাংশন যেকোনো সংখ্যার বর্গ প্রদান করে। দ্য মানচিত্র ফাংশন গ্রহণ করে বর্গক্ষেত্র ফাংশন এবং পরিসর (1, 10, 2) যুক্তি হিসাবে। এটা প্রযোজ্য বর্গক্ষেত্র একটি নির্দিষ্ট পরিসরে ফাংশন (1, 3, 5, 7, এবং 9) যা একটি মানচিত্র বস্তু প্রদান করে এবং পরে তালিকায় রূপান্তরিত হয়।

উপরের কোডটি আগেরটির চেয়ে দীর্ঘ। সুতরাং, একটি ল্যাম্বডা ফাংশন ব্যবহার করে এটিকে পাইথনিক করা যাক। নিম্নলিখিত স্ব-ব্যাখ্যামূলক কোডটি দেখুন।

বর্গক্ষেত্র = তালিকা(মানচিত্র(ল্যাম্বডা n: n ** 2, পরিসর(1, 10, 2)))

এখানে, lambda ফাংশন একটি প্রদত্ত পুনরাবৃত্তিযোগ্য উপর প্রয়োগ করা হয় যা একটি মানচিত্র বস্তু প্রদান করে এবং পরে তালিকায় রূপান্তরিত হয়।

মানচিত্র ফাংশনে একাধিক পুনরাবৃত্তিযোগ্য থাকতে পারে। একই প্রদর্শনের জন্য একটি দ্রুত উদাহরণ নেওয়া যাক।

num1 = [2, 4, 9] num2 = [3, 8, 5] ফলাফল = তালিকা(ম্যাপ(ল্যাম্বডা x, y: x + y, num1, num2)) ফলাফল # আউটপুট: [5, 12, 14]

এখানে, আমরা তালিকার উপাদান অনুযায়ী সংযোজন করেছি।

মনে রাখবেন যে মানচিত্রটি যেকোন পুনরাবৃত্তিযোগ্যকে একটি যুক্তি হিসাবে নিতে পারে এবং শুধুমাত্র একটি তালিকা নয়।

ফিল্টার

ধরা যাক আপনি একটি প্রদত্ত তালিকা থেকে বিজোড় সংখ্যা খুঁজে পেতে চান। এই সমস্যার কাছে যাওয়ার একটি দ্রুত উপায় হল একটি তালিকা বোঝার ভিতরে একটি লুপ ব্যবহার করা।

সংখ্যা = [1, 34, 23, 56, 89, 44, 92] বিজোড়_সংখ্যা = [সংখ্যা % 2 হলে সংখ্যার জন্য সংখ্যা!= 0]

লুপ মাধ্যমে পুনরাবৃত্তি নাম্বার এবং প্রতিটি বিজোড় সংখ্যা সংরক্ষণ করে। শর্তসাপেক্ষ বিবৃতি এখানে ফিল্টার জোড় সংখ্যা বের করে এবং শুধুমাত্র বিজোড় সংখ্যা প্রদান করে। এই ধরনের কার্যকারিতা ফিল্টারিং নামে পরিচিত।

পাইথনের ফিল্টারটি দ্রুততর উপায়ে একই কাজ করে। এটি মানচিত্রের মতো একই সিনট্যাক্স রয়েছে।

ফিল্টার (ফাংশন, পুনরাবৃত্তিযোগ্য)

এটি মানচিত্রের অনুরূপ কাজ করে। এটি একটি মানচিত্র বস্তুর বিপরীতে একটি ফিল্টার বস্তু প্রদান করে।

ফিল্টার ফাংশন ব্যবহার করে উপরের উদাহরণটি পুনরায় প্রয়োগ করা যাক।

def find_odd(x): যদি x % 2 != 0: রিটার্ন x nums = [1, 34, 23, 56, 89, 44, 92] odds = list(filter(find_odd, nums)) print(odds) # আউটপুট : [১, ২৩, ৮৯]

আমাদের এটি রূপান্তর করা যাক খুঁজে_বিজোড় একটি ল্যাম্বডা ফাংশনে ফাংশন করুন এবং এটিকে ছোট করতে কোডটি পুনরায় লিখুন।

সংখ্যা = [1, 34, 23, 56, 89, 44, 92] odds = list(filter(lambda x: x % 2 != 0, nums)) print(odds) # আউটপুট: [1, 23, 89]

একটি পুনরাবৃত্তিযোগ্য এর সমস্ত আইটেম যার জন্য ল্যাম্বডা ফাংশন সত্যে মূল্যায়ন করে এতে যোগ করা হবে অস্বাভাবিক.

হ্রাস করা

ধরা যাক আপনি প্রথম পাঁচটি পূর্ণসংখ্যার যোগফল গণনা করতে চান। আপনি নিম্নলিখিত মত কিছু লিখতে পারেন:

সংখ্যা = [1, 2, 3, 4, 5] যোগফল = 0 সংখ্যার জন্য সংখ্যা: যোগফল += সংখ্যা যোগফল # আউটপুট: 15

লুপ মাধ্যমে পুনরাবৃত্তি নাম্বার এবং সমস্ত সংখ্যা যোগ করতে থাকে সমষ্টি আবার এটি পাইথনিক করার জন্য, আমাদের একটি ফাংশন আছে, অর্থাত্ Reduce.

কমানোর জন্য সিনট্যাক্স নিম্নরূপ:

হ্রাস (ফাংশন, পুনরাবৃত্তিযোগ্য, [, আরম্ভকারী])

হ্রাস প্রযোজ্য a ক্রিয়া ক্রমবর্ধমানভাবে একটি সব আইটেম উপর পুনরাবৃত্ত এবং একটি একক মান প্রদান করে। আপনি যদি এখনও এটি না পেয়ে থাকেন তাহলে চিন্তা করবেন না।

আসুন আমরা রিডুড ফাংশন দিয়ে উপরের উদাহরণটি পুনরায় প্রয়োগ করি।

functools থেকে import reduce nums = [1, 2, 3, 4, 5] summ = reduce(lambda x, y: x + y, nums) যোগফল # আউটপুট: 15

পর্দার আড়ালে কী ঘটছে তা বুঝতে নিম্নলিখিত চিত্রটি পড়ুন।

পাইথন কমাতে | Lambda মানচিত্র ফিল্টার হ্রাস

ছবির উৎস: লেখক

এখানে, যোগফল ক্রমবর্ধমান/পরবর্তী পদ্ধতিতে সঞ্চালিত হয়: ((((1 + 2) + 3) + 4) + 5)।

সারাংশ

ল্যামডা

  • অনেক আর্গুমেন্ট সহ ফাংশন কিন্তু শুধুমাত্র একটি এক্সপ্রেশন।
  • এটি আমাদের কোডকে পাইথনিক করতে এবং ফাংশন র্যাপার তৈরি করতে সাহায্য করে।

মানচিত্র

  • একটি ফাংশন যা একটি পুনরাবৃত্তিযোগ্য প্রতিটি আইটেমের জন্য একটি প্রদত্ত ফাংশন প্রয়োগ করে এবং একটি পুনরাবৃত্তিকারী প্রদান করে।
  • এটি একটি প্রদান করে দ্রুত প্রদত্ত অবস্থার উপর ভিত্তি করে একটি পুনরাবৃত্তিযোগ্য রূপান্তর করার উপায়।
  • এটি একাধিক পুনরাবৃত্তিযোগ্য থাকতে পারে।

ফিল্টার

  • এটি মানচিত্র ফাংশন হিসাবে একই সিনট্যাক্স আছে.
  • এটি প্রদত্ত অবস্থার উপর ভিত্তি করে একটি পুনরাবৃত্তিযোগ্য থেকে আইটেম নিষ্কাশন করতে সাহায্য করে।

হ্রাস করা

  • এটি একটি ফাংশন প্রয়োগ করে ক্রমবর্ধমানভাবে/ক্রমানুসারে একটি পুনরাবৃত্তিযোগ্য প্রতিটি আইটেমের উপর এবং একটি একক মান প্রদান করে।

শেষটীকা

এটি আজকের আলোচনা সম্পূর্ণ করে। এই প্রবন্ধ পড়ার জন্য আপনাকে ধন্যবাদ! আমি আশা করি আপনি এই নিবন্ধটি উপভোগ করেছেন এবং এটি লেখার সময় আমি যতটা উপভোগ করেছি ততটা মজা পেয়েছি 🙂

আমি কি গুরুত্বপূর্ণ কিছু মিস করেছি বা আপনার চিন্তা শেয়ার করতে চাই? নীচে মন্তব্য করুন, এবং আমি আপনার কাছে ফিরে যাব।

লেখক সম্পর্কে

আমি হর্ষ ধামেচা, আর্টিফিশিয়াল ইন্টেলিজেন্স, মেশিন লার্নিং মেন্টর এবং উচ্চাকাঙ্খী ডেটা সায়েন্টিস্টের শেষ বর্ষের স্নাতক ছাত্র। আমি পাইথন, মেশিন লার্নিং এবং ডিপ লার্নিং সম্পর্কে লিখি।

আপনার যদি কোন প্রশ্ন থাকে, আপনি সরাসরি করতে পারেন ইমেইল আমি, খুব বিরক্তিকর তাই না? সেখানে আমাদের আছে লিঙ্কডইন এবং Twitter. আমি নিয়মিত পাইথন, মেশিন লার্নিং, ডিপ লার্নিং এবং ডেটা সায়েন্সের উপর থ্রেড লিখি Twitter. আপডেট থাকার জন্য আমাকে অনুসরণ করুন!

আপনি একটি কটাক্ষপাত করতে পারেন অন্যান্য নিবন্ধ আমি লিখেছি.

এখনও, এই নিবন্ধটি পড়া? আপনাকে বিশেষ ধন্যবাদ 🙌

এই নিবন্ধে প্রদর্শিত মিডিয়াগুলি অ্যানালিটিক্স বিদ্যা মালিকানাধীন নয় এবং এটি লেখকের বিবেচনার ভিত্তিতে ব্যবহৃত হয়।

সূত্র: https://www.analyticsvidhya.com/blog/2021/10/an-explanation-to-pythons-lambda-map-filter-and-reduce/

সময় স্ট্যাম্প:

থেকে আরো বিশ্লেষণ বিদ্যা