Table of Contents

    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 করে
    Important: Python List internally dynamic array-এর মতো কাজ করে। তাই এটি memory-তে ordered sequence হিসেবে data store করে।

    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

    1. Python List কী?
    2. List কি Data Type নাকি Data Structure? ব্যাখ্যা করো।
    3. List কেন mutable?
    4. List এবং Tuple-এর মধ্যে পার্থক্য লিখো।
    5. append() এবং extend() এর মধ্যে পার্থক্য কী?
    6. remove() এবং pop() এর মধ্যে পার্থক্য কী?
    7. Negative indexing কী?
    8. List slicing কীভাবে কাজ করে?
    9. Nested List কী?
    10. 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 তৈরি করা।