Table of Contents

    Class - XII: SEMESTER – III: Unit – 1: Python Programming: Section 10: Lists

    Python Programming: Lists

    ১. List কী?

    Python programming language-এ List হলো একটি built-in data structure, যার মাধ্যমে একাধিক value একসাথে একটি variable-এর মধ্যে store করা যায়। সহজভাবে বললে, list হলো ordered collection of items। একটি list-এর মধ্যে number, string, boolean, float এমনকি অন্য list-ও রাখা যায়।

    বাস্তব জীবনে list-এর মতো অনেক উদাহরণ আছে। যেমন student names-এর list, marks-এর list, product price-এর list, shopping cart-এর items, employee ID-এর list ইত্যাদি। Python-এ list square brackets [ ] ব্যবহার করে তৈরি করা হয়।

    Example:

    numbers = [10, 20, 30, 40, 50]
    names = ["Rahim", "Karim", "Salma"]
    mixed_list = [101, "Python", 95.5, True]
    
    print(numbers)
    print(names)
    print(mixed_list)

    এখানে numbers list-এর মধ্যে integer values আছে, names list-এর মধ্যে string values আছে, এবং mixed_list list-এর মধ্যে বিভিন্ন ধরনের data type আছে।

    Important: Python list হলো mutable। অর্থাৎ list তৈরি করার পরে এর element add, remove বা change করা যায়।

    ২. List-এর বৈশিষ্ট্য

    • List ordered — অর্থাৎ elements নির্দিষ্ট order-এ থাকে।
    • List mutable — element পরিবর্তন করা যায়।
    • List duplicate values allow করে।
    • List-এর মধ্যে different data types রাখা যায়।
    • List indexing এবং slicing support করে।
    • List nested হতে পারে, অর্থাৎ list-এর ভিতরে আরেকটি list রাখা যায়।

    Duplicate Example:

    values = [10, 20, 10, 30, 20]
    
    print(values)

    এখানে 10 এবং 20 একাধিকবার আছে। Python list duplicate elements allow করে।

    ৩. List Indexing

    List-এর প্রতিটি element-এর একটি position থাকে, যাকে index বলা হয়। Python-এ indexing শুরু হয় 0 থেকে। অর্থাৎ প্রথম element-এর index 0, দ্বিতীয় element-এর index 1।

    Example:

    fruits = ["Apple", "Banana", "Mango", "Orange"]
    
    print(fruits[0])
    print(fruits[1])
    print(fruits[3])

    Output:

    Apple
    Banana
    Orange

    এখানে fruits[0] প্রথম element, fruits[1] দ্বিতীয় element এবং fruits[3] চতুর্থ element return করছে।

    Negative Indexing:

    Python-এ negative indexing ব্যবহার করে list-এর শেষ দিক থেকে elements access করা যায়। শেষ element-এর index -1, তার আগের element-এর index -2

    fruits = ["Apple", "Banana", "Mango", "Orange"]
    
    print(fruits[-1])
    print(fruits[-2])

    Output:

    Orange
    Mango

    ৪. List Element পরিবর্তন করা

    যেহেতু list mutable, তাই index ব্যবহার করে list-এর element পরিবর্তন করা যায়।

    numbers = [10, 20, 30, 40]
    
    numbers[1] = 200
    
    print(numbers)

    Output:

    [10, 200, 30, 40]

    এখানে index 1-এর value 20 পরিবর্তন করে 200 করা হয়েছে।

    ৫. List Operations

    Python list-এর উপর বিভিন্ন operation করা যায়। গুরুত্বপূর্ণ list operations হলো:

    • Concatenation
    • Repetition
    • Membership
    • Slicing

    ৬. List Concatenation

    দুই বা ততোধিক list একসাথে যুক্ত করার প্রক্রিয়াকে list concatenation বলা হয়। Python-এ list concatenate করার জন্য + operator ব্যবহার করা হয়।

    Example:

    list1 = [10, 20, 30]
    list2 = [40, 50, 60]
    
    result = list1 + list2
    
    print(result)

    Output:

    [10, 20, 30, 40, 50, 60]

    এখানে list1 এবং list2 যুক্ত হয়ে একটি নতুন list তৈরি হয়েছে।

    ৭. List Repetition

    একই list একাধিকবার repeat করার জন্য * operator ব্যবহার করা হয়।

    values = [1, 2, 3]
    
    result = values * 3
    
    print(result)

    Output:

    [1, 2, 3, 1, 2, 3, 1, 2, 3]

    এখানে list তিনবার repeat হয়েছে।

    ৮. Membership Operation

    কোনো value list-এর মধ্যে আছে কিনা তা check করতে in এবং not in operators ব্যবহার করা হয়।

    numbers = [10, 20, 30, 40, 50]
    
    print(30 in numbers)
    print(100 in numbers)
    print(100 not in numbers)

    Output:

    True
    False
    True

    Practical Example:

    students = ["Rahim", "Karim", "Salma"]
    
    name = input("Student name লিখুন: ")
    
    if name in students:
        print("Student found")
    else:
        print("Student not found")

    ৯. List Slicing

    List-এর নির্দিষ্ট অংশ বের করার জন্য slicing ব্যবহার করা হয়। Slicing-এর মাধ্যমে list-এর subset বা portion পাওয়া যায়।

    Syntax:

    list_name[start : stop : step]
    Part ব্যাখ্যা
    start কোন index থেকে শুরু হবে
    stop কোন index-এর আগ পর্যন্ত যাবে
    step কত ধাপ করে এগোবে

    Example:

    numbers = [10, 20, 30, 40, 50, 60, 70]
    
    print(numbers[1:5])
    print(numbers[:4])
    print(numbers[3:])
    print(numbers[::2])
    print(numbers[::-1])

    Output:

    [20, 30, 40, 50]
    [10, 20, 30, 40]
    [40, 50, 60, 70]
    [10, 30, 50, 70]
    [70, 60, 50, 40, 30, 20, 10]

    numbers[::-1] list-কে reverse order-এ return করে।

    ১০. Traversing a List using Loops

    List-এর প্রতিটি element একে একে access বা process করার প্রক্রিয়াকে list traversal বলা হয়। Python-এ list traverse করার জন্য সাধারণত for loop এবং while loop ব্যবহার করা হয়।

    Using for Loop:

    numbers = [10, 20, 30, 40]
    
    for num in numbers:
        print(num)

    Using index with for Loop:

    numbers = [10, 20, 30, 40]
    
    for i in range(len(numbers)):
        print("Index:", i, "Value:", numbers[i])

    Using while Loop:

    numbers = [10, 20, 30, 40]
    
    i = 0
    
    while i < len(numbers):
        print(numbers[i])
        i = i + 1

    for loop direct element access করার জন্য সহজ। আর index দরকার হলে range(len(list)) ব্যবহার করা যায়।

    ১১. len()

    len() function list-এর total element সংখ্যা return করে।

    numbers = [10, 20, 30, 40, 50]
    
    print(len(numbers))

    Output:

    5

    ১২. list()

    list() function ব্যবহার করে অন্য iterable object যেমন string, tuple, range ইত্যাদিকে list-এ convert করা যায়।

    text = "Python"
    
    letters = list(text)
    
    print(letters)

    Output:

    ['P', 'y', 't', 'h', 'o', 'n']

    range থেকে list:

    numbers = list(range(1, 6))
    
    print(numbers)

    Output:

    [1, 2, 3, 4, 5]

    ১৩. append()

    append() method list-এর শেষে একটি নতুন element add করে।

    fruits = ["Apple", "Banana"]
    
    fruits.append("Mango")
    
    print(fruits)

    Output:

    ['Apple', 'Banana', 'Mango']

    append() একবারে শুধুমাত্র একটি element add করে।

    ১৪. extend()

    extend() method একটি list-এর শেষে অন্য list বা iterable-এর সব elements add করে।

    list1 = [10, 20]
    list2 = [30, 40]
    
    list1.extend(list2)
    
    print(list1)

    Output:

    [10, 20, 30, 40]
    append() vs extend(): append() পুরো object-কে একটি single element হিসেবে add করে, কিন্তু extend() iterable-এর প্রতিটি element আলাদা করে add করে।

    Difference Example:

    a = [1, 2]
    a.append([3, 4])
    print(a)
    
    b = [1, 2]
    b.extend([3, 4])
    print(b)

    Output:

    [1, 2, [3, 4]]
    [1, 2, 3, 4]

    ১৫. insert()

    insert() method list-এর নির্দিষ্ট index-এ একটি element add করে।

    Syntax:

    list_name.insert(index, value)

    Example:

    numbers = [10, 20, 40, 50]
    
    numbers.insert(2, 30)
    
    print(numbers)

    Output:

    [10, 20, 30, 40, 50]

    এখানে index 2-তে 30 insert করা হয়েছে।

    ১৬. count()

    count() method list-এর মধ্যে কোনো element কতবার আছে তা return করে।

    numbers = [10, 20, 10, 30, 10, 40]
    
    print(numbers.count(10))

    Output:

    3

    ১৭. index()

    index() method list-এর মধ্যে কোনো element-এর প্রথম occurrence-এর index return করে। যদি element না থাকে, তাহলে ValueError দেয়।

    numbers = [10, 20, 30, 40]
    
    print(numbers.index(30))

    Output:

    2

    Safe Search Example:

    numbers = [10, 20, 30, 40]
    
    value = 50
    
    if value in numbers:
        print(numbers.index(value))
    else:
        print("Value not found")

    ১৮. remove()

    remove() method list থেকে নির্দিষ্ট value remove করে। যদি value একাধিকবার থাকে, তাহলে প্রথম occurrence remove করে।

    numbers = [10, 20, 30, 20, 40]
    
    numbers.remove(20)
    
    print(numbers)

    Output:

    [10, 30, 20, 40]
    Note: value list-এ না থাকলে remove() error দেয়। তাই safe remove করতে আগে membership check করা ভালো।
    numbers = [10, 20, 30]
    value = 40
    
    if value in numbers:
        numbers.remove(value)
    else:
        print("Value list-এ নেই")

    ১৯. pop()

    pop() method list থেকে element remove করে এবং removed element return করে। যদি index না দেওয়া হয়, তাহলে শেষ element remove করে।

    numbers = [10, 20, 30, 40]
    
    removed_value = numbers.pop()
    
    print("Removed:", removed_value)
    print(numbers)

    Output:

    Removed: 40
    [10, 20, 30]

    Index দিয়ে pop:

    numbers = [10, 20, 30, 40]
    
    removed_value = numbers.pop(1)
    
    print("Removed:", removed_value)
    print(numbers)

    Output:

    Removed: 20
    [10, 30, 40]

    ২০. reverse()

    reverse() method original list-কে reverse order-এ সাজায়। এটি list modify করে এবং নতুন list return করে না।

    numbers = [10, 20, 30, 40]
    
    numbers.reverse()
    
    print(numbers)

    Output:

    [40, 30, 20, 10]

    Slicing দিয়ে reverse:

    numbers = [10, 20, 30, 40]
    
    reversed_list = numbers[::-1]
    
    print(reversed_list)

    ২১. sort() এবং sorted()

    Python-এ list sort করার জন্য sort() method এবং sorted() function ব্যবহার করা হয়।

    sort()

    sort() original list-কে sort করে। এটি list modify করে।

    numbers = [40, 10, 30, 20]
    
    numbers.sort()
    
    print(numbers)

    Output:

    [10, 20, 30, 40]

    Descending order:

    numbers = [40, 10, 30, 20]
    
    numbers.sort(reverse=True)
    
    print(numbers)

    Output:

    [40, 30, 20, 10]

    sorted()

    sorted() original list পরিবর্তন না করে একটি নতুন sorted list return করে।

    numbers = [40, 10, 30, 20]
    
    new_list = sorted(numbers)
    
    print("Original:", numbers)
    print("Sorted:", new_list)

    Output:

    Original: [40, 10, 30, 20]
    Sorted: [10, 20, 30, 40]
    Difference: sort() original list change করে, কিন্তু sorted() নতুন sorted list return করে।

    ২২. min(), max() এবং sum()

    Numeric list-এর উপর common mathematical operations করার জন্য min(), max(), এবং sum() খুব useful।

    Function কাজ Example
    min() List-এর minimum value return করে min([10, 20, 5]) → 5
    max() List-এর maximum value return করে max([10, 20, 5]) → 20
    sum() List-এর numeric values যোগ করে sum([10, 20, 5]) → 35

    Example:

    marks = [80, 75, 90, 65, 88]
    
    print("Minimum:", min(marks))
    print("Maximum:", max(marks))
    print("Total:", sum(marks))
    print("Mean:", sum(marks) / len(marks))

    ২৩. Nested Lists

    একটি list-এর ভিতরে আরেকটি list থাকলে তাকে Nested List বলা হয়। Nested list সাধারণত matrix, table, student records, 2D data ইত্যাদি store করার জন্য ব্যবহার করা হয়।

    Example:

    matrix = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    
    print(matrix)

    Nested List Element Access:

    matrix = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    
    print(matrix[0][0])
    print(matrix[1][2])
    print(matrix[2][1])

    Output:

    1
    6
    8

    এখানে matrix[1][2] মানে দ্বিতীয় row-এর তৃতীয় element।

    Nested List Traversal:

    matrix = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    
    for row in matrix:
        for value in row:
            print(value, end=" ")
        print()

    Output:

    1 2 3
    4 5 6
    7 8 9

    ২৪. List Methods Summary Table

    Function / Method কাজ Example
    len() List-এর length return করে len([10, 20]) → 2
    list() Iterable object-কে list-এ convert করে list("abc")
    append() List-এর শেষে element add করে numbers.append(50)
    extend() List-এর শেষে অন্য iterable-এর elements add করে a.extend(b)
    insert() নির্দিষ্ট index-এ element add করে a.insert(1, 100)
    count() Element কতবার আছে count করে a.count(10)
    index() Element-এর প্রথম index return করে a.index(20)
    remove() নির্দিষ্ট value remove করে a.remove(10)
    pop() Index অনুযায়ী element remove করে এবং return করে a.pop()
    reverse() Original list reverse করে a.reverse()
    sort() Original list sort করে a.sort()
    sorted() নতুন sorted list return করে sorted(a)
    min() Minimum value return করে min(a)
    max() Maximum value return করে max(a)
    sum() Numeric list-এর total return করে sum(a)

    ২৫. Suggested Program ১: List-এর Maximum, Minimum এবং Mean বের করা

    Numeric values stored in a list থেকে maximum, minimum এবং mean বের করা list-এর একটি common practical program। Mean বলতে average বোঝায়, অর্থাৎ total sum-কে total element সংখ্যা দিয়ে ভাগ করলে mean পাওয়া যায়।

    Program using built-in functions:

    numbers = [10, 25, 5, 40, 30]
    
    maximum_value = max(numbers)
    minimum_value = min(numbers)
    mean_value = sum(numbers) / len(numbers)
    
    print("Maximum:", maximum_value)
    print("Minimum:", minimum_value)
    print("Mean:", mean_value)

    Output:

    Maximum: 40
    Minimum: 5
    Mean: 22.0

    Program with user input:

    numbers = []
    
    n = int(input("কতগুলো number input করবেন? "))
    
    for i in range(n):
        value = int(input("Number লিখুন: "))
        numbers.append(value)
    
    maximum_value = max(numbers)
    minimum_value = min(numbers)
    mean_value = sum(numbers) / len(numbers)
    
    print("List:", numbers)
    print("Maximum:", maximum_value)
    print("Minimum:", minimum_value)
    print("Mean:", mean_value)

    Manual Method without max(), min(), sum():

    numbers = [10, 25, 5, 40, 30]
    
    maximum_value = numbers[0]
    minimum_value = numbers[0]
    total = 0
    
    for value in numbers:
        if value > maximum_value:
            maximum_value = value
    
        if value < minimum_value:
            minimum_value = value
    
        total = total + value
    
    mean_value = total / len(numbers)
    
    print("Maximum:", maximum_value)
    print("Minimum:", minimum_value)
    print("Mean:", mean_value)

    এই manual method list traversal, condition এবং calculation একসাথে practice করার জন্য খুব ভালো।

    ২৬. Suggested Program ২: Linear Search on List of Numbers

    Linear Search হলো একটি simple searching technique, যেখানে list-এর প্রতিটি element একে একে check করা হয়। যদি target value পাওয়া যায়, তাহলে search successful হয়। যদি list-এর সব element check করার পরও value না পাওয়া যায়, তাহলে search unsuccessful হয়।

    Program:

    numbers = [10, 20, 30, 40, 50]
    
    target = int(input("Search value লিখুন: "))
    
    found = False
    
    for i in range(len(numbers)):
        if numbers[i] == target:
            print("Value found at index:", i)
            found = True
            break
    
    if found == False:
        print("Value not found")

    Explanation:

    1. প্রথমে একটি list নেওয়া হয়েছে।
    2. User থেকে search value input নেওয়া হয়েছে।
    3. found variable initially False রাখা হয়েছে।
    4. Loop দিয়ে list-এর প্রতিটি element check করা হয়েছে।
    5. যদি target value পাওয়া যায়, index print করে loop break করা হয়েছে।
    6. যদি value না পাওয়া যায়, তাহলে শেষে “Value not found” message দেখানো হয়েছে।

    Linear Search with Multiple Occurrences:

    numbers = [10, 20, 30, 20, 40, 20]
    
    target = int(input("Search value লিখুন: "))
    
    positions = []
    
    for i in range(len(numbers)):
        if numbers[i] == target:
            positions.append(i)
    
    if len(positions) > 0:
        print("Value found at indexes:", positions)
    else:
        print("Value not found")

    এই program target value-এর সব positions list আকারে দেখায়।

    ২৭. Suggested Program ৩: Counting Frequency of Elements in a List

    List-এর মধ্যে কোন element কতবার আছে তা count করাকে frequency counting বলা হয়। এটি data analysis, voting count, marks analysis, duplicate detection ইত্যাদিতে ব্যবহার করা যায়।

    Using count() method:

    numbers = [10, 20, 10, 30, 20, 10, 40]
    
    checked = []
    
    for value in numbers:
        if value not in checked:
            frequency = numbers.count(value)
            print(value, "appears", frequency, "times")
            checked.append(value)

    Output:

    10 appears 3 times
    20 appears 2 times
    30 appears 1 times
    40 appears 1 times

    Using dictionary:

    numbers = [10, 20, 10, 30, 20, 10, 40]
    
    frequency = {}
    
    for value in numbers:
        if value in frequency:
            frequency[value] = frequency[value] + 1
        else:
            frequency[value] = 1
    
    print(frequency)

    Output:

    {10: 3, 20: 2, 30: 1, 40: 1}

    Dictionary ব্যবহার করলে প্রতিটি value key হিসেবে থাকে এবং তার count value হিসেবে store হয়।

    ২৮. Complete Practice Program

    নিচের program-এ list input, append, traversal, max, min, mean, linear search এবং frequency count একসাথে দেখানো হয়েছে।

    numbers = []
    
    n = int(input("কতগুলো number input করবেন? "))
    
    for i in range(n):
        value = int(input("Number লিখুন: "))
        numbers.append(value)
    
    print("Your list:", numbers)
    
    print("Maximum:", max(numbers))
    print("Minimum:", min(numbers))
    print("Sum:", sum(numbers))
    print("Mean:", sum(numbers) / len(numbers))
    
    target = int(input("Search value লিখুন: "))
    
    found = False
    
    for i in range(len(numbers)):
        if numbers[i] == target:
            print("Value found at index:", i)
            found = True
            break
    
    if not found:
        print("Value not found")
    
    frequency = {}
    
    for value in numbers:
        if value in frequency:
            frequency[value] = frequency[value] + 1
        else:
            frequency[value] = 1
    
    print("Frequency:", frequency)

    Program Explanation:

    1. User থেকে কতগুলো number input নেওয়া হবে তা নেওয়া হয়েছে।
    2. Loop ব্যবহার করে values list-এ append করা হয়েছে।
    3. max(), min(), sum() এবং len() দিয়ে basic statistics বের করা হয়েছে।
    4. Linear search ব্যবহার করে target value list-এর মধ্যে আছে কিনা check করা হয়েছে।
    5. Dictionary ব্যবহার করে প্রতিটি element-এর frequency count করা হয়েছে।

    ২৯. Common Mistakes in Lists

    • Index out of range: list-এর length-এর বাইরে index access করলে error হয়।
    • append() এবং extend() confuse করা: append একটি element add করে, extend iterable-এর elements add করে।
    • sort() এবং sorted() confuse করা: sort original list modify করে, sorted নতুন list return করে।
    • remove() value না থাকলে error দেয়: remove করার আগে value আছে কিনা check করা ভালো।
    • empty list-এ min(), max() ব্যবহার: empty list হলে error হবে।
    • sum() non-numeric list-এ ব্যবহার: string বা mixed list হলে sum() error দিতে পারে।

    Safe min/max Example:

    numbers = []
    
    if len(numbers) > 0:
        print(max(numbers))
    else:
        print("List খালি, maximum বের করা যাবে না")

    ৩০. উপসংহার

    Python list একটি অত্যন্ত গুরুত্বপূর্ণ এবং powerful data structure। একাধিক data একসাথে store, update, remove এবং process করার জন্য list ব্যবহার করা হয়। List ordered, mutable এবং flexible হওয়ার কারণে real-world programming-এ এর ব্যবহার অনেক বেশি।

    List indexing, slicing, concatenation, repetition এবং membership operations আমাদের list-এর data access ও manipulate করতে সাহায্য করে। Loop ব্যবহার করে list traverse করলে প্রতিটি element আলাদাভাবে process করা যায়। Built-in functions এবং methods যেমন len(), append(), extend(), insert(), remove(), pop(), sort(), sorted(), min(), max() এবং sum() list handling-কে আরও সহজ ও efficient করে।

    Nested lists matrix বা tabular data represent করতে সাহায্য করে। Maximum, minimum, mean calculation, linear search এবং frequency counting-এর মতো programs list-এর practical use বুঝতে খুব গুরুত্বপূর্ণ। Python-এ list ভালোভাবে আয়ত্ত করতে পারলে data processing, automation, searching, sorting, report generation এবং real-world software development অনেক সহজ হয়ে যায়।