কম্পিউটার

পাইথন ফ্ল্যাটেন তালিকা:একটি কীভাবে-প্রদর্শক

একটি তালিকা সমতল করা একটি তালিকা থেকে একটি মাত্রা সরানোর প্রক্রিয়া বোঝায়। একটি মাত্রা একটি তালিকায় একটি আইটেম সনাক্ত করার জন্য প্রয়োজনীয় একটি অতিরিক্ত কো-অর্ডিনেটকে বোঝায়। আপনি একটি তালিকা বোধগম্যতা, লুপের জন্য নেস্টেড বা itertools.chain() পদ্ধতি ব্যবহার করে একটি পাইথন তালিকা সমতল করতে পারেন।

একটি পাইথন তালিকায় একাধিক মাত্রা থাকতে পারে। এর মানে হল যে আপনার তালিকার মধ্যে একটি তালিকা রয়েছে। এই তালিকাগুলি, কখনও কখনও 'নেস্টেড তালিকা' হিসাবে উল্লেখ করা হয়, আবার একটি নিয়মিত তালিকায় রূপান্তরিত হতে পারে৷

এর মানে আপনি একটি তালিকার মধ্যে থাকা তালিকা থেকে একটি একক তালিকায় সমস্ত মান স্থানান্তর করতে পারেন। তালিকার একটি তালিকাকে একটি তালিকায় পরিণত করাকে বলা হয় "একটি তালিকা সমতল করা।"

পাইথন সমতল তালিকা

পাইথন তালিকা সমতল করার তিনটি উপায় রয়েছে:

  • একটি তালিকা বোঝার ব্যবহার।
  • লুপের জন্য নেস্টেড ব্যবহার করা।
  • itertools.chain() পদ্ধতি ব্যবহার করে।

এই নির্দেশিকায়, আমরা কীভাবে একটি তালিকা বোঝার জন্য, লুপের জন্য এবং itertools.chain() ব্যবহার করে একটি তালিকাকে সমতল করতে হয় সে সম্পর্কে কথা বলি। পদ্ধতি আমরা দুটি উদাহরণের মধ্য দিয়ে চলেছি যাতে আপনি আপনার নিজস্ব প্রোগ্রামে তালিকাগুলি সমতল করা শুরু করতে পারেন৷

পাইথন:একটি তালিকা বোঝার ব্যবহার করে সমতল তালিকা

একটি পাইথন তালিকা বোধগম্য একটি বিদ্যমান তালিকার বিষয়বস্তুর উপর ভিত্তি করে একটি তালিকা সংজ্ঞায়িত করে। আপনি আপনার নতুন তালিকায় যাওয়া প্রতিটি উপাদানকে শর্ত বা বোঝার মধ্যে পরিবর্তন করে কাস্টমাইজ করতে পারেন।

কম্প্রিহেনশন হল সিনট্যাক্টিক সুগার যা একটি তালিকার উপর পুনরাবৃত্তি করতে এবং একটি নতুন তালিকা তৈরি করার জন্য লুপ ব্যবহার করে। এর মানে তারা লুপের মতো একই মৌলিক উপায়ে কাজ করে কিন্তু ভিন্ন সিনট্যাক্স ব্যবহার করে।

এখানে একটি তালিকা বোঝার জন্য সিনট্যাক্স রয়েছে:

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।

numbers = [1, 2, 3]

new_numbers = [number * 2 for number in numbers]

এই বোধগম্যতা আমাদের "সংখ্যা" তালিকার প্রতিটি সংখ্যাকে 2 দ্বারা গুণ করে।

সমতল তালিকা:তালিকা বোঝার উদাহরণ

আমাদের কাছে তালিকার একটি তালিকা রয়েছে যাতে একটি রেস্তোরাঁয় বিভিন্ন স্যান্ডউইচ ফিলিংস পাওয়া যায়। বর্তমানে, আমাদের তালিকার তালিকা এইরকম দেখাচ্ছে:

foods = [
	["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"],
	["Cheese", "Egg"],
	["Ham", "Bacon", "Chicken Club", "Tuna"]
]

প্রথম তালিকায় ভেগান স্যান্ডউইচ ফিলিংস রয়েছে; দ্বিতীয় তালিকায় নিরামিষ স্যান্ডউইচ ফিলিংস রয়েছে; তৃতীয় তালিকায় মাংস রয়েছে এমন সব স্যান্ডউইচ ফিলিংস রয়েছে।

আমরা এই তালিকাটিকে খাবারের একক তালিকায় পরিবর্তন করতে চাই। দুটির চেয়ে এক মাত্রা সহ একটি তালিকা নিয়ে কাজ করা সহজ। এই তালিকায় একাধিক মাত্রা থাকার প্রয়োজন নেই। আমাদের তালিকা থেকে দ্বিতীয় মাত্রা অপসারণ করতে, আমরা একটি তালিকা বোঝার ব্যবহার করতে পারি:

new_foods = [food for sublist in foods for food in sublist]
print(new_foods)

এই তালিকা বোধগম্যতা "খাদ্য" পাইথন ভেরিয়েবলের প্রতিটি তালিকার উপর পুনরাবৃত্তি করে। প্রতিটি মান তারপর একটি প্রধান তালিকা যোগ করা হয়. একবার আমাদের তালিকা তৈরি হয়ে গেলে, আমরা এটিকে কনসোলে প্রিন্ট আউট করি৷

আসুন আমাদের কোড দেখি এবং দেখি কি হয়:

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

আমাদের তালিকার তালিকা সফলভাবে একটি সমতল তালিকায় রূপান্তরিত হয়েছে। সমস্ত উপাদান এখন তিনটির পরিবর্তে একটি তালিকার মধ্যে উপস্থিত হয়৷

পাইথন:নেস্টেড ফর লুপ ব্যবহার করে সমতল তালিকা

আমরা লুপের জন্য একটি নেস্টেড পাইথন ব্যবহার করেও একই ফলাফল অর্জন করি। "লুপের জন্য নেস্টেড" হল "লুপের জন্য লুপের মধ্যে একটি" বলার আরেকটি উপায়। আমাদের তালিকা বোধগম্য হল লুপের জন্য নিম্নলিখিত প্রতিনিধিত্ব করার আরেকটি উপায়:

new_foods = []
for sublist in foods:
	for food in sublist:
		new_foods.append(food)

print(new_foods)

আমাদের কোড তালিকার মূল তালিকার প্রতিটি তালিকার প্রতিটি তালিকা আইটেমের উপর পুনরাবৃত্তি করতে লুপের জন্য দুটি ব্যবহার করে। আসুন আমাদের কোড রান করি:

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

আমাদের প্রোগ্রাম আমাদের তালিকা বোঝার মতো একই ফলাফল দেয়। বেশিরভাগ ক্ষেত্রে, একটি তালিকা বোঝা একটি লুপের চেয়ে একটি ভাল সমাধান। তালিকার বোধগম্যতা ছোট এবং এই ক্ষেত্রে, নেস্টেড ফর লুপের চেয়ে পড়া সহজ।

পাইথন:Itertools ব্যবহার করে সমতল তালিকা

Itertools পাইথন স্ট্যান্ডার্ড লাইব্রেরির একটি মডিউল। মডিউলটি বিভিন্ন পদ্ধতি প্রদান করে, যা পুনরাবৃত্তিযোগ্য বস্তু এবং জেনারেটরের সাথে কাজ করা সহজ করে তোলে।

আমাদের উদ্দেশ্যে, আমরা শুধুমাত্র চেইন() উল্লেখ করি পদ্ধতি এই পদ্ধতিটি তালিকার একটি তালিকা গ্রহণ করে এবং একটি সমতল তালিকা প্রদান করে।

পাইথন আমদানি বিবৃতি ব্যবহার করে আমাদের কোডে itertools মডিউল আমদানি করে শুরু করুন:

import itertools

এরপরে, তালিকার তালিকা নির্ধারণ করুন এবং চেইন() ব্যবহার করুন তালিকা সমতল করার পদ্ধতি:

foods = [
	["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"],
	["Cheese", "Egg"],
	["Ham", "Bacon", "Chicken Club", "Tuna"]
]

new_foods = itertools.chain(*foods)

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

চেইন() পদ্ধতি একটি itertools.chain অবজেক্ট প্রদান করে। আমাদের সমতল তালিকা দেখতে, আমাদের এই বস্তুটিকে একটি তালিকায় রূপান্তর করতে হবে। আমরা এটি তালিকা() ব্যবহার করে করি পদ্ধতি:

print(list(new_foods))

আসুন আমাদের কোডটি কার্যকর করি:

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

আমাদের কোড আমাদের তালিকাকে সমতল করেছে।

যদিও itertools একটি তালিকাকে সমতল করার একটি কার্যকর উপায়, এটি আমরা আলোচনা করেছি শেষ দুটি পদ্ধতির তুলনায় এটি আরও উন্নত৷

এটি কারণ আপনাকে অবশ্যই আপনার কোডে itertools আমদানি করতে হবে যা একটি নতুন নির্ভরতা প্রবর্তন করে। আরো কি, চেইন() পদ্ধতিতে আনপ্যাক করা জড়িত যা বোঝা কঠিন হতে পারে।

উপসংহার

আপনি একটি তালিকা বোঝা, লুপের জন্য নেস্টেড এবং itertools.chain() পদ্ধতি ব্যবহার করে একটি পাইথন তালিকা সমতল করতে পারেন। তালিকা বোধগম্য হল সবচেয়ে "পাইথনিক" পদ্ধতি এবং তাই বেশিরভাগ ক্ষেত্রেই এটি পছন্দের৷

লুপগুলির জন্য নেস্টেড কার্যকর হলেও, তারা তালিকা বোঝার চেয়ে কোডের বেশি লাইন ব্যবহার করে। itertools.chain() পদ্ধতি একইভাবে কার্যকর কিন্তু নতুনদের জন্য এটি বোঝা কঠিন হতে পারে।

সাধারণত একটি নতুন লাইব্রেরি আমদানি করার কোন প্রয়োজন নেই — itertools — যখন পাইথন আপনাকে একটি তালিকা সমতল করার জন্য প্রয়োজনীয় সমস্ত সরঞ্জাম দেয়৷

আপনি কি পাইথন সম্পর্কে আরও জানতে চান? আমাদের সম্পূর্ণ কিভাবে পাইথন শিখতে হয় গাইড দেখুন। আপনি বিশেষজ্ঞ শেখার টিপস এবং সেরা কোর্স এবং বইগুলির একটি তালিকা পাবেন যেগুলি থেকে আপনি শিখতে পারেন৷


  1. পাইথন স্ট্যাক:একটি কিভাবে করতে হবে গাইড

  2. পাইথন তালিকা পদ্ধতি:একটি ধাপে ধাপে নির্দেশিকা

  3. পাইথন তালিকায় খুঁজুন:একটি শিক্ষানবিস গাইড

  4. পাইথন হ্যালো ওয়ার্ল্ড:একটি কিভাবে-টু গাইড