- List কী? — বাস্তব উদাহরণে
- List তৈরি করা ও basic operations
- Indexing — নির্দিষ্ট উপাদানে পৌঁছানো
- Slicing — List-এর অংশ নেওয়া
- List পরিবর্তন করা — Update ও Delete
- গুরুত্বপূর্ণ List Methods
- List-এর সাথে Loops
- Nested List — List-এর ভেতরে List
- List Comprehension — সংক্ষিপ্ত List তৈরি
- Tuple — অপরিবর্তনীয় List
- List বনাম Tuple — কখন কোনটি?
- প্র্যাকটিক্যাল প্রজেক্ট — Student Result System
- সারাংশ ও অনুশীলন
এতদিন আমরা এক সময়ে একটি মান নিয়ে কাজ করেছি। কিন্তু বাস্তব জীবনে একসাথে অনেক তথ্য নিয়ে কাজ করতে হয় — যেমন একটি ক্লাসের সব ছাত্রের নাম, একটি দোকানের সব পণ্যের দাম। এই ধরনের সংগ্রহকে সংরক্ষণ করতে Python-এ সবচেয়ে বেশি ব্যবহৃত হয় List।
List হলো Python-এর একটি Data Structure যেখানে একসাথে অনেক মান সংরক্ষণ করা যায়। এটিকে তুমি একটি সুপারশপের ট্রলির মতো ভাবতে পারো — ট্রলিতে যত ইচ্ছা পণ্য রাখা যায়, একটি একটি করে বের করা যায়, নতুন পণ্য যোগ করা যায়, বা পুরনোটা সরানো যায়।
List-এর বৈশিষ্ট্য:
| বৈশিষ্ট্য | মানে | উদাহরণ |
|---|---|---|
| Ordered | উপাদানগুলো ক্রমানুযায়ী থাকে | প্রথমটি সবসময় প্রথমেই থাকবে |
| Mutable | পরিবর্তনযোগ্য | যোগ, বাদ, পরিবর্তন করা যায় |
| Indexed | প্রতিটি উপাদানের index আছে | list[0], list[1]... |
| Mixed Types | বিভিন্ন ধরনের ডেটা রাখা যায় | সংখ্যা, লেখা, Boolean একসাথে |
| Duplicate | একই মান একাধিকবার রাখা যায় | [1, 2, 2, 3] |
List তৈরি করতে Square Bracket [ ] ব্যবহার করো। উপাদানগুলো কমা দিয়ে আলাদা করো।
# বিভিন্ন ধরনের List fruits = ["আম", "কলা", "লিচু", "আনারস"] numbers = [10, 20, 30, 40, 50] mixed = ["রাহিম", 25, True, 3.14] # মিশ্র ধরন empty = [] # খালি List # Basic information print(f"ফলের List: {fruits}") print(f"মোট ফল: {len(fruits)}") # দৈর্ঘ্য print(f"ধরন: {type(fruits)}") # List-এর মধ্যে আছে কিনা যাচাই print("আম" in fruits) # True print("পেয়ারা" in fruits) # False # দুটি List জোড়া লাগানো more_fruits = ["পেয়ারা", "নারিকেল"] all_fruits = fruits + more_fruits print(all_fruits)
ফলের List: ['আম', 'কলা', 'লিচু', 'আনারস'] মোট ফল: 4 ধরন: <class 'list'> True False ['আম', 'কলা', 'লিচু', 'আনারস', 'পেয়ারা', 'নারিকেল']
List-এর প্রতিটি উপাদানের একটি Index আছে। Python-এ Index শুরু হয় ০ থেকে। Negative Index দিয়ে পেছন থেকে উপাদান নেওয়া যায়।
fruits = ["আম", "কলা", "লিচু", "আনারস", "পেয়ারা"] # Positive Indexing print(fruits[0]) # আম (প্রথম) print(fruits[2]) # লিচু (তৃতীয়) print(fruits[4]) # পেয়ারা (শেষ) # Negative Indexing (পেছন থেকে) print(fruits[-1]) # পেয়ারা (শেষটা) print(fruits[-2]) # আনারস (শেষের আগেরটা) # সবচেয়ে সহজে প্রথম ও শেষ print(f"প্রথম: {fruits[0]}, শেষ: {fruits[-1]}")
আম লিচু পেয়ারা পেয়ারা আনারস প্রথম: আম, শেষ: পেয়ারা
List-এর বাইরের Index দিলে IndexError আসবে। যেমন ৫টি উপাদানের List-এ fruits[5] দিলে Error। সর্বোচ্চ Index হবে len(list) - 1।
Slicing দিয়ে List-এর একটি নির্দিষ্ট অংশ নেওয়া যায়। Syntax: list[start:stop:step]
nums = [10, 20, 30, 40, 50, 60, 70] print(nums[1:4]) # [20, 30, 40] — index 1 থেকে 3 পর্যন্ত print(nums[:3]) # [10, 20, 30] — শুরু থেকে index 2 পর্যন্ত print(nums[4:]) # [50, 60, 70] — index 4 থেকে শেষ পর্যন্ত print(nums[::2]) # [10, 30, 50, 70] — একটি পর পর print(nums[::-1]) # [70, 60, 50, 40, 30, 20, 10] — উল্টো # শেষের ৩টি print(nums[-3:]) # [50, 60, 70] # List-এর কপি copy = nums[:] print(copy)
[20, 30, 40] [10, 20, 30] [50, 60, 70] [10, 30, 50, 70] [70, 60, 50, 40, 30, 20, 10] [50, 60, 70] [10, 20, 30, 40, 50, 60, 70]
List Mutable — মানে এর উপাদান পরিবর্তন করা যায়।
fruits = ["আম", "কলা", "লিচু", "আনারস"] # নির্দিষ্ট উপাদান পরিবর্তন fruits[1] = "পেয়ারা" print(fruits) # ['আম', 'পেয়ারা', 'লিচু', 'আনারস'] # Slice দিয়ে একাধিক পরিবর্তন fruits[1:3] = ["নারিকেল", "পেঁপে"] print(fruits) # ['আম', 'নারিকেল', 'পেঁপে', 'আনারস'] # del দিয়ে মুছে ফেলা del fruits[0] print(fruits) # ['নারিকেল', 'পেঁপে', 'আনারস'] # Slice মুছে ফেলা del fruits[0:2] print(fruits) # ['আনারস']
['আম', 'পেয়ারা', 'লিচু', 'আনারস'] ['আম', 'নারিকেল', 'পেঁপে', 'আনারস'] ['নারিকেল', 'পেঁপে', 'আনারস'] ['আনারস']
Python-এর List-এ অনেক Built-in Method আছে। সবচেয়ে বেশি ব্যবহৃত গুলো:
শেষে একটি উপাদান যোগ করে
i নম্বর index-এ x যোগ করে
অন্য List-এর সব উপাদান যোগ
প্রথম x খুঁজে মুছে দেয়
i নম্বর উপাদান মুছে ফেরত দেয়
ছোট থেকে বড়ো ক্রমে সাজায়
List উল্টো করে দেয়
x-এর index বলে দেয়
x কতবার আছে গণনা করে
List সম্পূর্ণ খালি করে
List-এর একটি কপি তৈরি করে
নতুন sorted List তৈরি করে
students = ["রাহিম", "করিম", "সালমা"] # append — শেষে যোগ students.append("জামাল") print(students) # ['রাহিম', 'করিম', 'সালমা', 'জামাল'] # insert — নির্দিষ্ট জায়গায় students.insert(1, "নাসরিন") print(students) # ['রাহিম', 'নাসরিন', 'করিম', 'সালমা', 'জামাল'] # remove — নির্দিষ্ট মান মুছে students.remove("করিম") print(students) # ['রাহিম', 'নাসরিন', 'সালমা', 'জামাল'] # pop — শেষেরটা বের করে ফেরত দেয় last = students.pop() print(f"বের হলো: {last}") # জামাল print(students) # sort ও reverse marks = [85, 42, 67, 91, 55] marks.sort() print(f"ছোট থেকে: {marks}") marks.sort(reverse=True) print(f"বড় থেকে: {marks}") # index ও count nums = [3, 1, 4, 1, 5, 9, 2, 6] print(f"4-এর index: {nums.index(4)}") # 2 print(f"1 কতবার আছে: {nums.count(1)}") # 2
['রাহিম', 'করিম', 'সালমা', 'জামাল'] ['রাহিম', 'নাসরিন', 'করিম', 'সালমা', 'জামাল'] ['রাহিম', 'নাসরিন', 'সালমা', 'জামাল'] বের হলো: জামাল ['রাহিম', 'নাসরিন', 'সালমা'] ছোট থেকে: [42, 55, 67, 85, 91] বড় থেকে: [91, 85, 67, 55, 42] 4-এর index: 2 1 কতবার আছে: 2
scores = [78, 92, 55, 88, 67, 95, 45] print(f"মোট: {sum(scores)}") print(f"সর্বনিম্ন: {min(scores)}") print(f"সর্বোচ্চ: {max(scores)}") print(f"মোট সংখ্যা: {len(scores)}") print(f"গড়: {sum(scores)/len(scores):.2f}")
মোট: 520 সর্বনিম্ন: 45 সর্বোচ্চ: 95 মোট সংখ্যা: 7 গড়: 74.29
পর্ব ৫-এ Loop শিখেছিলাম। List-এর সাথে Loop ব্যবহার করলে প্রতিটি উপাদানের উপর কাজ করা যায়।
products = [ {"naam": "চাল", "dam": 60, "porimaan": 5}, {"naam": "ডাল", "dam": 120, "porimaan": 2}, {"naam": "তেল", "dam": 180, "porimaan": 1}, {"naam": "চিনি", "dam": 100, "porimaan": 3}, ] print("বাজারের হিসাব:") print("─" * 35) total = 0 for item in products: subtotal = item["dam"] * item["porimaan"] total += subtotal print(f"{item['naam']:8} × {item['porimaan']} = {subtotal:6} টাকা") print("─" * 35) print(f"{'মোট':16} = {total:6} টাকা")
বাজারের হিসাব: ─────────────────────────────────── চাল × 5 = 300 টাকা ডাল × 2 = 240 টাকা তেল × 1 = 180 টাকা চিনি × 3 = 300 টাকা ─────────────────────────────────── মোট = 1020 টাকা
একটি List-এর উপাদান হিসেবে আরেকটি List রাখা যায়। এটি 2D বা Matrix ধরনের ডেটা সংরক্ষণে ব্যবহৃত হয়।
# ক্লাসের ছাত্রদের নম্বর (৩ সাবজেক্ট) results = [ ["রাহিম", 85, 72, 90], ["করিম", 78, 88, 65], ["সালমা", 92, 95, 88], ] # নির্দিষ্ট উপাদানে পৌঁছানো print(results[0]) # ['রাহিম', 85, 72, 90] print(results[0][0]) # রাহিম print(results[2][1]) # 92 (সালমার প্রথম নম্বর) # সবার গড় বের করা print("\nরেজাল্ট শিট:") for row in results: naam = row[0] marks = row[1:] avg = sum(marks) / len(marks) print(f"{naam:8} → নম্বর: {marks}, গড়: {avg:.1f}")
['রাহিম', 85, 72, 90] রাহিম 92 রেজাল্ট শিট: রাহিম → নম্বর: [85, 72, 90], গড়: 82.3 করিম → নম্বর: [78, 88, 65], গড়: 77.0 সালমা → নম্বর: [92, 95, 88], গড়: 91.7
List Comprehension হলো Loop ও Condition ব্যবহার করে এক লাইনে নতুন List তৈরির সংক্ষিপ্ত পদ্ধতি।
# সাধারণ Loop পদ্ধতি squares_loop = [] for i in range(1, 6): squares_loop.append(i ** 2) # List Comprehension — এক লাইনে! squares_comp = [i ** 2 for i in range(1, 6)] print(squares_comp) # [1, 4, 9, 16, 25] # Condition সহ even = [x for x in range(1, 21) if x % 2 == 0] print(even) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] # String থেকে বড় হাতে রূপান্তর names = ["rahim", "karim", "salma"] upper = [n.upper() for n in names] print(upper) # ['RAHIM', 'KARIM', 'SALMA'] # পাস করা ছাত্রদের বের করা all_marks = [45, 78, 28, 91, 55, 30, 67] pass_marks = [m for m in all_marks if m >= 33] print(f"পাসের নম্বর: {pass_marks}")
[1, 4, 9, 16, 25] [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] ['RAHIM', 'KARIM', 'SALMA'] পাসের নম্বর: [45, 78, 91, 55, 67]
List Comprehension কোডকে ছোট ও পড়তে সহজ করে। তবে খুব জটিল Comprehension এড়িয়ে চলো — সেক্ষেত্রে সাধারণ Loop বেশি স্পষ্ট।
Tuple দেখতে List-এর মতো, কিন্তু একবার তৈরি করলে আর পরিবর্তন করা যায় না। Tuple তৈরি করতে ( ) ব্যবহার করা হয়।
# Tuple তৈরি colors = ("লাল", "সবুজ", "নীল") point = (10, 20) # X, Y coordinate single = ("একটি",) # একটি উপাদানের Tuple — কমা দরকার! empty = () # খালি Tuple # Indexing ও Slicing — List-এর মতোই print(colors[0]) # লাল print(colors[-1]) # নীল print(colors[1:3]) # ('সবুজ', 'নীল') # Tuple Unpacking x, y = point print(f"X={x}, Y={y}") # পরিবর্তন করা যায় না — Error আসবে! # colors[0] = "হলুদ" ← TypeError: 'tuple' does not support item assignment # তবে Tuple Methods আছে nums = (1, 2, 3, 2, 4, 2) print(f"2 কতবার: {nums.count(2)}") # 3 print(f"3-এর index: {nums.index(3)}") # 2
লাল
নীল
('সবুজ', 'নীল')
X=10, Y=20
2 কতবার: 3
3-এর index: 2
- ✅ পরিবর্তন করা যায় (Mutable)
- ✅ যোগ, বাদ, আপডেট সম্ভব
- ✅ append, remove, sort ইত্যাদি
- ❌ Tuple-এর চেয়ে বেশি Memory নেয়
- ❌ Tuple-এর চেয়ে কিছুটা ধীর
- 🔑 যখন ডেটা বদলাবে তখন
- ❌ পরিবর্তন করা যায় না (Immutable)
- ❌ কোনো যোগ/বাদ নেই
- ✅ শুধু count ও index Method
- ✅ List-এর চেয়ে কম Memory নেয়
- ✅ List-এর চেয়ে দ্রুত
- 🔑 Fixed ডেটার জন্য (coordinates, dates)
# Tuple ব্যবহার করো — Fixed ডেটা days_of_week = ("রবি", "সোম", "মঙ্গল", "বুধ", "বৃহ", "শুক্র", "শনি") dhaka_coord = (23.8103, 90.4125) rgb_green = (0, 255, 0) # List ব্যবহার করো — পরিবর্তনযোগ্য ডেটা shopping_cart = ["চাল", "ডাল"] # পরে যোগ/বাদ হবে students = ["রাহিম", "করিম"] # নতুন ছাত্র যোগ হবে # Tuple থেকে List এবং List থেকে Tuple t = (1, 2, 3) l = list(t) # Tuple → List t2= tuple(l) # List → Tuple print(type(l), l) print(type(t2), t2)
<class 'list'> [1, 2, 3] <class 'tuple'> (1, 2, 3)
List-এর সব ধারণা ব্যবহার করে একটি সম্পূর্ণ Student Result System তৈরি করি। ছাত্র যোগ করা, নম্বর দেওয়া, মেধা তালিকা তৈরি — সবকিছু।
ছাত্রদের নাম ও নম্বর সংরক্ষণ করে গড়, গ্রেড ও মেধা তালিকা তৈরি করবে।
# ছাত্রদের ডেটা students = [] def add_student(naam, bangla, english, math, science): """ছাত্র যোগ করে।""" marks = [bangla, english, math, science] total = sum(marks) average = total / len(marks) if average >= 80: grade = "A+" elif average >= 70: grade = "A" elif average >= 60: grade = "B" elif average >= 50: grade = "C" elif average >= 33: grade = "D" else: grade = "F" students.append({ "naam": naam, "marks": marks, "total": total, "average": average, "grade": grade }) def show_results(): """মেধা তালিকা প্রিন্ট করে।""" ranked = sorted(students, key=lambda s: s["total"], reverse=True) print(f"\n{'='*52}") print(f"{'মেধা':4} {'নাম':10} {'মোট':6} {'গড়':7} {'গ্রেড':5}") print(f"{'='*52}") for rank, s in enumerate(ranked, 1): status = "✅" if s["grade"] != "F" else "❌" print(f"{rank:3} {s['naam']:10} {s['total']:5} {s['average']:5.1f} {s['grade']:3} {status}") print(f"{'─'*52}") all_avg = [s["average"] for s in students] print(f"ক্লাস গড়: {sum(all_avg)/len(all_avg):.1f}") passed = len([s for s in students if s["grade"] != "F"]) print(f"পাস: {passed}/{len(students)} জন") # ছাত্র যোগ করা add_student("রাহিম", 85, 72, 90, 78) add_student("সালমা", 92, 95, 88, 91) add_student("করিম", 55, 48, 62, 70) add_student("নাসরিন", 78, 82, 75, 80) add_student("জামাল", 25, 30, 28, 22) show_results()
==================================================== মেধা নাম মোট গড় গ্রেড ==================================================== 1 সালমা 366 91.5 A+ ✅ 2 রাহিম 325 81.2 A+ ✅ 3 নাসরিন 315 78.8 A ✅ 4 করিম 235 58.8 C ✅ 5 জামাল 105 26.2 F ❌ ──────────────────────────────────────────────────── ক্লাস গড়: 67.3 পাস: 4/5 জন
- List কী ও এর বৈশিষ্ট্য (Ordered, Mutable, Indexed)
- List তৈরি, len(), in operator
- Positive ও Negative Indexing
- Slicing — list[start:stop:step]
- List Update ও Delete (del)
- গুরুত্বপূর্ণ Methods: append, insert, remove, pop, sort, reverse, index, count
- Built-in Functions: sum, min, max, len
- List with Loops — বাজারের হিসাব
- Nested List — 2D ডেটা সংরক্ষণ
- List Comprehension — এক লাইনে নতুন List
- Tuple — Immutable, কম Memory, দ্রুত
- List vs Tuple — কখন কোনটি ব্যবহার করবে
- Student Result System প্রজেক্ট
- Shopping Cart: items নামে একটি List তৈরি করো। পণ্য যোগ করো, সরাও, মোট দাম বের করো
- Top 3: ১০টি সংখ্যার List থেকে শীর্ষ ৩টি বের করো (sort ও slice ব্যবহার করো)
- Duplicate সরানো: একটি List থেকে সব duplicate উপাদান সরিয়ে unique List তৈরি করো
- Matrix যোগফল: দুটি 3×3 Nested List-এর প্রতিটি অবস্থানে যোগফল বের করো
- Vowel Count: একটি বাক্য থেকে সব vowel (a, e, i, o, u) List Comprehension দিয়ে বের করো
- Dictionary — key-value পেয়ারে ডেটা সংরক্ষণ
- Dictionary তৈরি, access, update, delete
- গুরুত্বপূর্ণ Dictionary Methods
- Set — অনন্য মানের সংগ্রহ
- Set Operations — Union, Intersection, Difference

0 Comments