কম্পিউটার টিউটোরিয়াল

পাইথন Zip: ধাপে ধাপে গাইড

পাইথন zip() ফাংশন ইটারেবল আইটেম গ্রহণ করে এবং সেগুলোকে একটি সিঙ্গেল টাপলে মার্জ করে। ফলাফল হলো একটি zip অবজেক্ট যা ইটারেবল পেয়ার সংরক্ষণ করে। আপনি zip() ফাংশনের মাধ্যমে লিস্ট, টাপল, সেট, বা ডিকশনারি পাস করতে পারেন।


পাইথনে বেশ কিছু বিল্ট-ইন ফাংশন রয়েছে যা কোডারদের ডেটা দিয়ে লুপ করতে দেয়। এই ফাংশনগুলোর একটি হলো পাইথন zip। zip() ফাংশন একটি ইটারেটর তৈরি করে যা দুটি বা ততোধিক ডেটা সোর্স থেকে এলিমেন্ট মার্জ করে একে করিয়ে।

এই টিউটোরিয়ালে, আমরা পাইথন zip()-এর বেসিকস ব্রেক ডাউন করব। আমরা কীভাবে zip ওপর ইটারেট করতে হয় এবং কীভাবে একটি জিপড অবজেক্ট আনজিপ করতে হয় তা আলোচনা করব।

পাইথন ইটেরেশন রিফ্রেশার

পাইথনে, আমরা iterate টার্ম ব্যবহার করি একটি প্রোগ্রাম লিস্টের মাধ্যমে রান করছে তা ডেসক্রাইব করতে। উদাহরণস্বরূপ, ধরুন আপনার একটি for লুপ আছে যা একটি কোম্পানি অপারেট করে সকল ব্রাঞ্চের নাম প্রিন্ট করে। আমরা বলব আমাদের প্রোগ্রাম নামের লিস্টের মাধ্যমে iterating করছে।

একটি iterable, অন্যদিকে, একটি অবজেক্ট যা এর মেম্বার আইটেম আলাদা আলাদা রিটার্ন করতে পারে। অ্যারে ইটারেবল কারণ আপনি একটি for লুপ ব্যবহার করে প্রতিটি আইটেম আলাদা আলাদা প্রিন্ট করতে পারেন।

পাইথন zip ফাংশন

zip() ফাংশন দুটি বা ততোধিক ইটারেবলের কন্টেন্ট কম্বাইন করে। zip() একটি zip অবজেক্ট রিটার্ন করে। এটি টাপল-এর একটি ইটেরেটর যেখানে আপনি আর্গুমেন্ট হিসেবে পাস করা সব ভ্যালু পেয়ার হিসেবে সংরক্ষিত থাকে।

পাইথনের zip() ফাংশন একটি ইটারেবল—যেমন লিস্ট, টাপল, সেট, বা ডিকশনারি—আর্গুমেন্ট হিসেবে নেয়। ফাংশনটি টাপল-এর একটি লিস্ট জেনারেট করবে যেটি আপনি ফাংশনে পাস করা প্রতিটি ইটারেবল থেকে এলিমেন্ট ধারণ করবে।

zip() ফাংশনের সিনট্যাক্স নিচের মতো:

zip(iterable1, iterable2, ...)

আপনি যত চান তত ইটারেবল ইনক্লুড করতে পারেন। আপনাকে zip() ফাংশনে আর্গুমেন্ট হিসেবে যে ইটারেবলগুলো মার্জ করতে চান সেগুলো স্পেসিফাই করতে হবে।

zip() মেথড এক্সিকিউট হতে থাকে যতক্ষণ না ইটারেবল অবজেক্টগুলো ফুলি জিপড হয়ে যায়। এটি হয় যখন ইটেরেবলগুলো এক্সহাস্টেড হয়ে যায়। অন্য কথায়, zip() মেথড থামে যখন সব সম্ভাব্য পেয়ার তৈরি হয়ে যায়।

zip পাইথন উদাহরণ

ধরুন, আপনার দুটি পাইথন লিস্ট রয়েছে। একটি লিস্টে এমপ্লয়ি নাম এবং অন্যটিতে এমপ্লয়ি নম্বর রয়েছে। আপনি উভয় লিস্টকে টাপল-এর একটি অ্যারেতে মার্জ করতে চান। এটি আপনাকে এমপ্লয়ি নাম এবং নম্বর সাইড বাই সাইড সংরক্ষণ করতে দেবে।

আমরা zip() ফাংশন ব্যবহার করে আমাদের দুটি লিস্ট মার্জ করতে পারি। এখানে একটি উদাহরণ প্রোগ্রাম যা এই ডেটা মার্জ করবে:

employee_numbers = [2, 9, 18, 28]
employee_names = ["Candice", "Ava", "Andrew", "Lucas"]
zipped_values = zip(employee_names, employee_numbers)
zipped_list = list(zipped_values)
print(zipped_list)

আমাদের zip ফাংশন নিচের আউটপুট রিটার্ন করে:

[('Candice', 2), ('Ava', 9), ('Andrew', 18), ('Lucas', 28)]

আমাদের প্রোগ্রাম টাপল আইটেমের একটি অ্যারে তৈরি করল। প্রতিটি টাপল একটি এমপ্লয়ির নাম এবং সম্মানিত এমপ্লয়ি নম্বর ধারণ করে।

আমাদের কোডের প্রথম দুটি লাইনে, আমরা ভ্যারিয়েবল ডিক্লেয়ার করেছি যা আমাদের এমপ্লয়ি নম্বর এবং নাম সংরক্ষণ করে।

এরপর, আমরা একটি zip() ফাংশন পারফর্ম করি। এই ফাংশন আমাদের দুটি লিস্ট একসাথে মার্জ করে এবং টাপল-এর একটি নতুন অ্যারে তৈরি করে।

আমরা আমাদের zip আইটেমকে একটি লিস্টে কনভার্ট করি। এর কারণ হলো zip() ফাংশন একটি zip অবজেক্ট রিটার্ন করে। আমরা zip অবজেক্টের ওপর ইটারেট করতে পারি। তবে, আমরা zip কনসোলে প্রিন্ট করে এর কন্টেন্ট রিডেবল ফর্মে দেখতে পারি না। আমাদের zip অবজেক্টকে লিস্টে কনভার্ট করতে হবে, যাতে কনসোল থেকে zip-এর কন্টেন্ট দেখতে পারি।

আমরা বলতে পারি আমাদের zipped_values একটি zip() আইটেম নিচের কোড আমাদের উপরের প্রোগ্রামে যোগ করলে:

print(type(zipped_values))

আমাদের কোড নিচের জিপড ক্লাস রিটার্ন করে:

<class 'zip'>

উপরের উদাহরণে, আমরা দুটি আইটেম জিপ করেছি। তবে, যদি আমাদের আরও কিছু জিপ করার থাকত, আমরা সেটিও করতে পারতাম। একমাত্র পরিবর্তন আমরা করতাম আমাদের zip() ফাংশনে অন্য একটি আইটেম লিস্ট পাস করতাম।

পাইথনে zip ব্যবহার করে ইটারেবল ওপর লুপ করা

zip() ফাংশন একটি ইটারেটর রিটার্ন করে। এর মানে আমরা প্রতিটি জিপড আইটেমের কন্টেন্ট আলাদা আলাদা দেখতে পারি।

একাধিক ইটারেবলের সাথে কাজ করা zip() ফাংশন পাইথনে সবচেয়ে পপুলার ইউজ কেসlerden একটি। উদাহরণস্বরূপ, আপনি যদি একাধিক লিস্টের মাধ্যমে যেতে চান, আপনি zip() ফাংশন ব্যবহার করতে চাইতে পারেন।

আমরা zip() ফাংশন ব্যবহার করি আমাদের employee_numbers এবং employee_names লিস্ট উভয়ের ওপর ইটারেট করতে:

employee_numbers = [2, 9, 18, 28]
employee_names = ["Candice", "Ava", "Andrew", "Lucas"]
for name, number in zip(employee_names, employee_numbers):
    print(name, number)

আমাদের কোড নিচের আউটপুট রিটার্ন করে:

Candice 2
Ava 9
Andrew 18
Lucas 28

আমাদের প্রোগ্রাম zip() রিটার্ন করা টাপল-এর লিস্টের মাধ্যমে ইটারেট করে, এবং সেগুলো দুটি ভ্যালুতে ভাগ করে: name এবং number।

এটি আমাদের জন্য একাধিক ইটারেবল অবজেক্ট একসাথে ইটারেট করা সহজ করে দিয়েছে। আমরা এখন প্রতিটি এমপ্লয়ি নাম তাদের রেসপেক্টিভ এমপ্লয়ি নম্বরের পাশাপাশি দেখতে পারি। আমরা চাইলে তিন বা ততোধিক ইটারেবল অবজেক্টের মাধ্যমে ইটারেট করতে পারতাম।

পাইথনে ভ্যালু আনজিপ করা

আমাদের কোডে, আমরা বিভিন্ন টাইপের ডেটা জিপ করেছি। কিন্তু আমরা ডেটা তার পূর্বের রূপে কীভাবে রিস্টোর করব? আপনার যদি টাপল-এর একটি লিস্ট—বা জিপড ভ্যালু—রয়েছে যেগুলো আপনি ভাগ করতে চান, আপনি zip() ফাংশন-এর আনপ্যাকিং অপারেটর ব্যবহার করতে পারেন। এটি একটি এস্টারিস্ক * zip() ফাংশনের সাথে কনজাকশনে ব্যবহার করা হয়।

zip() আনপ্যাকিং অপারেটর ইন একশনের উদাহরণ নিচে:

employees_zipped = [('Candice', 2), ('Ava', 9), ('Andrew', 18), ('Lucas', 28)]
employee_names, employee_numbers = zip(*employees_zipped)
print(employee_names)
print(employee_numbers)

আমাদের কোড নিচের আউটপুট রিটার্ন করে:

('Candice', 'Ava', 'Andrew', 'Lucas')
(2, 9, 18, 28)

আমাদের কোডের প্রথম লাইনে, আমরা একটি ভ্যারিয়েবল ডিফাইন করেছি যেটি টাপল-এর একটি লিস্ট অন্তর্ভুক্ত করে। তারপর, পরবর্তী লাইনে, আমরা দুটি ভ্যারিয়েবল ডিফাইন করি। এই ভ্যারিয়েবলগুলো হলো employee_names এবং employee_numbers. আমরা এই ভ্যারিয়েবলগুলোকে আমাদের আনজিপ ফাংশন থেকে ভ্যালু অ্যাসাইন করি।

আনজিপ ফাংশন হলো একটি zip ফাংশন যা আমাদের employees_zipped ভ্যারিয়েবল নেয়, আনপ্যাকিং অপারেটর * ব্যবহার করে zip আনপ্যাক করে। উপরের উদাহরণে, আমরা আমাদের দুটি নতুন ভ্যারিয়েবল প্রিন্ট করেছি যেগুলো আমাদের এমপ্লয়ি নাম এবং নম্বর ধারণ করে।

উপসংহার

zip() ফাংশন ইটারেবল অবজেক্ট ইনপুট হিসেবে নেয় এবং সেগুলোকে একটি zip() অবজেক্টে কম্বাইন করে। এই zip() অবজেক্ট প্রতিটি ইটারেবল ইনপুট থেকে ভ্যালু সাইড বাই সাইড ডিসপ্লে করে। এটি উপকারী হয় যদি আপনার দুটি বা ততোধিক অ্যারে বা টাপল থাকে যেগুলো আপনি একসাথে মার্জ করতে চান।

আমরা zip() ফাংশন শূন্য বা এক ইনপুটের সাথে কীভাবে ব্যবহার করতে হয় তা আলোচনা করেছি। আপনি zip() ব্যবহার করে ইটারেবল ওপর লুপ করতে পারেন এবং আপনি যে ডেটা জিপ করেছেন সেটি আনজিপ করতে পারেন। আপনি এখন পাইথন zip() ফাংশনের মাস্টার বানার পথে আছেন।

পাইথন সফটওয়ার ডেভেলপমেন্ট ল্যাঙ্গুয়েজ শিখতে আরও টিপস এবং পরামর্শের জন্য আমাদের How to Code in Python গাইড পড়ুন।

  1. পাইথন ইন্টারপ্রেটার: ধাপে ধাপে গাইড

  2. পাইথনে পাওয়ার (ক্ষমতা) ক্যালকুলেশন: ** অপারেটর এবং pow() ফাংশন

  3. পাইথনে ফাইল রিনেম: একটি ধাপে ধাপে গাইড

  4. পাইথন zip() ফাংশন