List in python
Learning Objectives
- Data Type কী তা বুঝতে পারবেন
- Data Structure কী তা বুঝতে পারবেন
- Python List-এর প্রকৃত পরিচয় জানতে পারবেন
- List কেন Built-in Data Type এবং Data Structure—দুটোই, তা বুঝতে পারবেন
- List তৈরি করা, access করা, update করা এবং delete করা শিখবেন
- List methods এবং functions ব্যবহার করতে পারবেন
- Nested List এবং List Comprehension বুঝতে পারবেন
- Interview-এ List সম্পর্কে strong answer দিতে পারবেন
Introduction to Python List
Python-এর List হলো একটি ordered, mutable, dynamic collection। সহজ ভাষায়, List এমন একটি container যেখানে একাধিক value রাখা যায়। যেমন একজন ছাত্রের নাম, marks, subject list, employee data, product list ইত্যাদি।
Python-এ List square brackets [] ব্যবহার করে তৈরি করা হয়। List-এর প্রতিটি value-কে বলা হয় element বা item।
students = ["Rahim", "Karim", "Sakib", "Nusrat"]
print(students)
এখানে students একটি list variable এবং এর মধ্যে চারটি student name store করা আছে।
Definition Box
List কী?
List হলো Python-এর একটি built-in collection data type, যা ordered sequence আকারে একাধিক value store করতে পারে। List mutable অর্থাৎ List তৈরি করার পর এর element add, update বা delete করা যায়।
Python List is a built-in collection data type that stores multiple items in an ordered, mutable, and dynamic sequence.
numbers = [10, 20, 30, 40]
names = ["Rahim", "Karim", "Sakib"]
mixed_data = [101, "Rahim", 85.5, True]
উপরের example-গুলোতে দেখা যাচ্ছে List একই ধরনের data অথবা mixed type data—দুটোই store করতে পারে।
মূল প্রশ্ন: List কি Data Type নাকি Data Structure?
সংক্ষিপ্ত উত্তর হলো:
List হলো Python-এর Built-in Data Type এবং একই সাথে একটি Data Structure।
Python documentation অনুযায়ী List একটি built-in type। কিন্তু practical programming-এর দৃষ্টিকোণ থেকে List একটি data structure, কারণ এটি data সংরক্ষণ, access, update, delete এবং organize করার সুবিধা দেয়।
Data Type কী?
Data Type কম্পিউটারকে জানায় কোনো variable-এর মধ্যে কী ধরনের data রাখা হয়েছে। যেমন integer number, floating point number, string, boolean, list ইত্যাদি।
| Data Type | Example | Meaning |
|---|---|---|
| int | 10 | পূর্ণসংখ্যা |
| float | 10.5 | দশমিক সংখ্যা |
| str | "Python" | Text বা character sequence |
| bool | True / False | Logical value |
| list | [1, 2, 3] | Multiple values store করার collection type |
যেহেতু Python-এ list একটি built-in class/type হিসেবে available, তাই List একটি Data Type।
numbers = [10, 20, 30]
print(type(numbers))
Output
<class 'list'>
Data Structure কী?
Data Structure হলো data store, organize এবং manage করার একটি পদ্ধতি। এটি data efficiently access, modify, search, insert এবং delete করতে সাহায্য করে।
উদাহরণ হিসেবে Array, Stack, Queue, Linked List, Tree, Graph, Hash Table ইত্যাদি হলো common data structure।
| Data Structure | Purpose |
|---|---|
| Array | Same type data sequentially store করার জন্য |
| Stack | LIFO method-এ data manage করার জন্য |
| Queue | FIFO method-এ data manage করার জন্য |
| List | Ordered collection আকারে multiple data manage করার জন্য |
| Dictionary | Key-value pair আকারে data store করার জন্য |
কেন List একটি Data Structure?
List একটি Data Structure কারণ এটি data store করার পাশাপাশি data organize এবং manipulate করার সুবিধা দেয়।
- List একাধিক data একসাথে store করতে পারে
- List ordered collection maintain করে
- List indexing support করে
- List slicing support করে
- List mutable, অর্থাৎ data change করা যায়
- List dynamic size support করে
- List-এর মধ্যে duplicate value রাখা যায়
- List-এর মধ্যে mixed data type রাখা যায়
- List insert, update, delete, search, sort operations support করে
- List nested structure support করে
Python List-এর প্রধান বৈশিষ্ট্য
| Feature | Explanation | Example |
|---|---|---|
| Ordered | List element insertion order maintain করে | [10, 20, 30] |
| Mutable | List-এর value change করা যায় | numbers[0] = 100 |
| Duplicate Allowed | একই value একাধিকবার রাখা যায় | [10, 10, 20] |
| Heterogeneous | Different type data রাখা যায় | [1, "Python", True] |
| Dynamic Size | Runtime-এ size বাড়ানো-কমানো যায় | append(), remove() |
| Index Based | Element access করার জন্য index ব্যবহার হয় | list[0] |
Python-এ List তৈরি করার পদ্ধতি
1. Empty List
empty_list = []
print(empty_list)
2. List with Values
numbers = [10, 20, 30, 40]
print(numbers)
3. Mixed Data Type List
student = [101, "Rahim", 85.5, True]
print(student)
4. Using list() Constructor
letters = list("PYTHON")
print(letters)
Output
['P', 'Y', 'T', 'H', 'O', 'N']
List Indexing
List-এর প্রতিটি element-এর একটি position থাকে, যাকে বলা হয় index। Python indexing শুরু হয় 0 থেকে।
fruits = ["Apple", "Mango", "Banana", "Orange"]
print(fruits[0])
print(fruits[1])
print(fruits[2])
Output
Apple
Mango
Banana
Negative Indexing
Negative indexing ব্যবহার করে List-এর শেষ দিক থেকে element access করা যায়। শেষ element-এর index হলো -1।
fruits = ["Apple", "Mango", "Banana", "Orange"]
print(fruits[-1])
print(fruits[-2])
Output
Orange
Banana
List Slicing
Slicing ব্যবহার করে List-এর নির্দিষ্ট অংশ বের করা যায়। Syntax:
list_name[start:end:step]
এখানে start হলো starting index, end হলো ending index কিন্তু end index include হয় না, এবং step হলো কত gap দিয়ে element নেওয়া হবে।
numbers = [10, 20, 30, 40, 50, 60]
print(numbers[1:4])
print(numbers[:3])
print(numbers[3:])
print(numbers[::2])
print(numbers[::-1])
Output
[20, 30, 40]
[10, 20, 30]
[40, 50, 60]
[10, 30, 50]
[60, 50, 40, 30, 20, 10]
List-এ Element Add করা
1. append()
append() method List-এর শেষে একটি element add করে।
numbers = [10, 20, 30]
numbers.append(40)
print(numbers)
Output
[10, 20, 30, 40]
2. insert()
insert() method নির্দিষ্ট index-এ element add করে।
numbers = [10, 20, 40]
numbers.insert(2, 30)
print(numbers)
Output
[10, 20, 30, 40]
3. extend()
extend() method একটি List-এর সাথে আরেকটি iterable-এর সব element add করে।
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
Output
[1, 2, 3, 4, 5, 6]
List Element Update করা
List mutable হওয়ায় আমরা index ব্যবহার করে element update করতে পারি।
students = ["Rahim", "Karim", "Sakib"]
students[1] = "Nusrat"
print(students)
Output
['Rahim', 'Nusrat', 'Sakib']
Multiple Elements Update
numbers = [10, 20, 30, 40, 50]
numbers[1:4] = [200, 300, 400]
print(numbers)
Output
[10, 200, 300, 400, 50]
List থেকে Element Delete করা
1. remove()
remove() method নির্দিষ্ট value delete করে। যদি value না থাকে, তাহলে error দেয়।
numbers = [10, 20, 30, 20]
numbers.remove(20)
print(numbers)
Output
[10, 30, 20]
2. pop()
pop() method index অনুযায়ী element remove করে এবং removed value return করে। index না দিলে শেষ element remove করে।
numbers = [10, 20, 30]
removed_value = numbers.pop()
print(removed_value)
print(numbers)
Output
30
[10, 20]
3. del Keyword
numbers = [10, 20, 30, 40]
del numbers[1]
print(numbers)
Output
[10, 30, 40]
4. clear()
clear() method List-এর সব element remove করে, কিন্তু empty List রেখে দেয়।
numbers = [10, 20, 30]
numbers.clear()
print(numbers)
Output
[]
Important List Methods
| Method | Purpose | Example |
|---|---|---|
| append() | শেষে element add করে | list.append(10) |
| insert() | নির্দিষ্ট index-এ element add করে | list.insert(1, 50) |
| extend() | আরেকটি iterable-এর element add করে | list.extend([1,2]) |
| remove() | নির্দিষ্ট value remove করে | list.remove(10) |
| pop() | index অনুযায়ী element remove করে | list.pop() |
| clear() | সব element remove করে | list.clear() |
| index() | value-এর index return করে | list.index(20) |
| count() | value কতবার আছে count করে | list.count(10) |
| sort() | List sort করে | list.sort() |
| reverse() | List reverse করে | list.reverse() |
| copy() | List-এর shallow copy তৈরি করে | new_list = list.copy() |
List-এর সাথে ব্যবহৃত Built-in Functions
| Function | Purpose | Example |
|---|---|---|
| len() | List-এর element সংখ্যা দেয় | len(numbers) |
| max() | সবচেয়ে বড় value দেয় | max(numbers) |
| min() | সবচেয়ে ছোট value দেয় | min(numbers) |
| sum() | সব numeric value যোগ করে | sum(numbers) |
| sorted() | Sorted copy return করে | sorted(numbers) |
| type() | Data type show করে | type(numbers) |
numbers = [40, 10, 30, 20]
print(len(numbers))
print(max(numbers))
print(min(numbers))
print(sum(numbers))
print(sorted(numbers))
Output
4
40
10
100
[10, 20, 30, 40]
Loop ব্যবহার করে List Traversal
List-এর প্রতিটি element access করার জন্য loop ব্যবহার করা হয়।
Using for loop
students = ["Rahim", "Karim", "Nusrat"]
for student in students:
print(student)
Output
Rahim
Karim
Nusrat
Using index with range()
students = ["Rahim", "Karim", "Nusrat"]
for i in range(len(students)):
print(i, students[i])
Output
0 Rahim
1 Karim
2 Nusrat
Membership Operators in List
কোনো value List-এর মধ্যে আছে কিনা check করতে in এবং not in operator ব্যবহার করা হয়।
fruits = ["Apple", "Mango", "Banana"]
print("Mango" in fruits)
print("Orange" not in fruits)
Output
True
True
Nested List
যখন একটি List-এর ভিতরে আরেকটি List থাকে, তখন তাকে Nested List বলা হয়। Matrix বা table type data represent করতে Nested List ব্যবহার করা হয়।
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[0])
print(matrix[1][2])
Output
[1, 2, 3]
6
এখানে matrix[1][2] মানে হলো second row-এর third element।
List Comprehension
List Comprehension হলো concise বা short way-তে List তৈরি করার একটি powerful technique। এটি code ছোট, readable এবং efficient করে।
Normal Way
squares = []
for i in range(1, 6):
squares.append(i * i)
print(squares)
Output
[1, 4, 9, 16, 25]
Using List Comprehension
squares = [i * i for i in range(1, 6)]
print(squares)
Output
[1, 4, 9, 16, 25]
List Comprehension with Condition
even_numbers = [i for i in range(1, 11) if i % 2 == 0]
print(even_numbers)
Output
[2, 4, 6, 8, 10]
List Sorting
List sort করার জন্য sort() method এবং sorted() function ব্যবহার করা যায়।
sort()
sort() original List-কে change করে।
numbers = [40, 10, 30, 20]
numbers.sort()
print(numbers)
Output
[10, 20, 30, 40]
sorted()
sorted() original List change না করে sorted copy return করে।
numbers = [40, 10, 30, 20]
new_numbers = sorted(numbers)
print(numbers)
print(new_numbers)
Output
[40, 10, 30, 20]
[10, 20, 30, 40]
Descending Order
numbers = [40, 10, 30, 20]
numbers.sort(reverse=True)
print(numbers)
Output
[40, 30, 20, 10]
Copying List
List copy করার সময় direct assignment এবং actual copy-এর পার্থক্য জানা খুব গুরুত্বপূর্ণ।
Wrong Way: Direct Assignment
a = [10, 20, 30]
b = a
b.append(40)
print(a)
print(b)
Output
[10, 20, 30, 40]
[10, 20, 30, 40]
এখানে b = a করলে নতুন List তৈরি হয় না। দুটো variable একই List object-কে refer করে।
Correct Way: copy()
a = [10, 20, 30]
b = a.copy()
b.append(40)
print(a)
print(b)
Output
[10, 20, 30]
[10, 20, 30, 40]
List বনাম Tuple বনাম Set বনাম Dictionary
| Feature | List | Tuple | Set | Dictionary |
|---|---|---|---|---|
| Syntax | [] | () | {} | {key:value} |
| Ordered | Yes | Yes | No | Yes |
| Mutable | Yes | No | Yes | Yes |
| Duplicate Allowed | Yes | Yes | No | Keys duplicate নয় |
| Access | Index | Index | Direct index নয় | Key |
| Use Case | Changeable sequence data | Fixed sequence data | Unique values | Key-value data |
Basic Time Complexity of List Operations
Beginner level-এ Time Complexity জানা বাধ্যতামূলক না হলেও interview বা advanced programming-এর জন্য এটি গুরুত্বপূর্ণ।
| Operation | Average Time Complexity | Explanation |
|---|---|---|
| Access by index | O(1) | Index দিয়ে সরাসরি element পাওয়া যায় |
| Append at end | O(1) average | সাধারণত শেষে দ্রুত add হয় |
| Insert at beginning | O(n) | অন্যান্য element shift করতে হয় |
| Search value | O(n) | Element একে একে check করতে হয় |
| Delete by value | O(n) | প্রথমে value খুঁজতে হয়, তারপর remove করতে হয় |
| Sort | O(n log n) | Python optimized sorting algorithm ব্যবহার করে |
Real-life Use Cases of Python List
- Student names store করা
- Marks list manage করা
- Shopping cart items store করা
- Employee records temporarily hold করা
- Website menu items manage করা
- API response data process করা
- Database থেকে retrieved rows temporarily store করা
- Game scores maintain করা
- Data analysis-এ values collect করা
cart = ["Laptop", "Mouse", "Keyboard"]
cart.append("Monitor")
cart.remove("Mouse")
print(cart)
Output
['Laptop', 'Keyboard', 'Monitor']
Common Mistakes
- List index 1 থেকে শুরু হয় মনে করা — আসলে index 0 থেকে শুরু হয়
- append() এবং extend() একই মনে করা
- remove() এবং pop() এর পার্থক্য না বোঝা
- sort() এবং sorted() এর পার্থক্য না জানা
- b = a দিয়ে List copy হয়েছে মনে করা
- List mutable হওয়ায় original data change হয়ে যেতে পারে—এটা খেয়াল না রাখা
- List-এর মধ্যে mixed data type থাকলে sort করতে গিয়ে error হতে পারে
Interview Tip
Interview-তে শুধু "List is a Data Type" বললে উত্তর আংশিক সঠিক হবে। সবচেয়ে ভালো উত্তর হলো:
List is a built-in data type in Python that also works as a dynamic data structure for storing ordered and mutable collections of items.
বাংলায় বলা যায়:
Python List হলো একটি built-in data type, কিন্তু এটি data structure হিসেবেও কাজ করে, কারণ এটি ordered এবং mutable collection আকারে multiple values store, access, update এবং delete করতে পারে।
Quick Revision
- List square bracket [] দিয়ে তৈরি করা হয়
- List ordered collection
- List mutable
- List duplicate value allow করে
- List mixed data type store করতে পারে
- List indexing এবং slicing support করে
- List dynamic size support করে
- List হলো Python-এর built-in data type
- List practical sense-এ data structure হিসেবেও কাজ করে
Practice Questions
- Python List কী?
- List কি Data Type নাকি Data Structure? ব্যাখ্যা করো।
- List কেন mutable?
- List এবং Tuple-এর মধ্যে পার্থক্য লিখো।
- append() এবং extend() এর মধ্যে পার্থক্য কী?
- remove() এবং pop() এর মধ্যে পার্থক্য কী?
- Negative indexing কী?
- List slicing কীভাবে কাজ করে?
- Nested List কী?
- List Comprehension কী?
Sample Program: Student Marks List
নিচের program-এ students-এর marks একটি List-এ রাখা হয়েছে। তারপর total, average, highest এবং lowest marks বের করা হয়েছে।
marks = [85, 90, 78, 92, 88]
total = sum(marks)
average = total / len(marks)
highest = max(marks)
lowest = min(marks)
print("Marks:", marks)
print("Total Marks:", total)
print("Average Marks:", average)
print("Highest Marks:", highest)
print("Lowest Marks:", lowest)
Output
Marks: [85, 90, 78, 92, 88]
Total Marks: 433
Average Marks: 86.6
Highest Marks: 92
Lowest Marks: 78
এই example থেকে বোঝা যায় List বাস্তব জীবনের data management-এ খুব useful।
Key Takeaway
- ✔ List হলো Python-এর Built-in Data Type।
- ✔ List Ordered Collection সংরক্ষণ করে।
- ✔ List Mutable, অর্থাৎ element change করা যায়।
- ✔ List duplicate value allow করে।
- ✔ List indexing, slicing, insertion, deletion, sorting support করে।
- ✔ List Dynamic Data Structure হিসেবেও কাজ করে।
- ✔ Interview-এ সবচেয়ে সঠিক উত্তর: "List is both a Built-in Data Type and a Data Structure."
Final Summary
Python List হলো এমন একটি powerful built-in collection type যা একাধিক value ordered sequence আকারে store করতে পারে। Python-এর দৃষ্টিতে এটি একটি built-in data type, কারণ type() function ব্যবহার করলে এর class list দেখায়। আবার practical programming-এর দৃষ্টিতে এটি একটি data structure, কারণ এটি data organize, access, modify, insert, delete এবং process করার সম্পূর্ণ সুবিধা দেয়।
তাই Python List শেখা মানে শুধু একটি syntax শেখা নয়, বরং programming-এর data handling এবং problem solving-এর একটি strong foundation তৈরি করা।