# Refresher: List 1 ## Defining a List ### Definition A list is a built-in data type that represents an ordered collection of items. It is a mutable, dynamic array, meaning you can modify its elements and size after creation. ### Syntax ```python my_list = [element1, element2, element3, ...] ``` ### Examples - The provided code snippets demonstrate various aspects of working with lists in Python. **Code 1**: ```python a = [1, 2, 3] ``` - Initializes a list `a` with three integer elements. **Code 2**: ```python a = [1, "a"] ``` - Initializes a list `a` with two elements: an integer `1` and a string `"a"`. **Output 2**: ```plaintext # SyntaxError: closing parenthesis '}' does not match opening parenthesis '[' a = [1, "a"] ``` - This part of the code seems incomplete and might be causing a syntax error. The specific error is related to unmatched parentheses. **Code 3**: ```python a = ["a", 1, 3.14, True] # Lists can be heterogeneous ``` - Demonstrates that lists in Python can contain elements of different data types. **Code 4**: ```python a = list(range(10)) print(a) ``` **Output 4**: ```plaintext [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ``` - Uses the `list()` constructor to create a list containing elements from `0` to `9` (result of `range(10)`). **Code 5**: ```python students = ['Kusum', 'Shubham', 'Pooja'] print(students) ``` **Output 5**: ```plaintext ['Kusum', 'Shubham', 'Pooja'] ``` - Prints the list of student names. ### Indexing in a List ![image](https://d2beiqkhq929f0.cloudfront.net/public_assets/assets/000/066/375/original/upload_f402ef9034ec28e26319f0e940031598.png?1708936235) **Code**: ```python print(students[1]) ``` **Output**: ```plaintext Shubham ``` **Code**: ```python print(students[5]) ``` **Output**: ```plaintext # IndexError: list index out of range ``` **Explanation**: - Accessing elements in a list using indices. - An IndexError occurs when trying to access an index beyond the list's length. ### Reverse Indexing ![image](https://d2beiqkhq929f0.cloudfront.net/public_assets/assets/000/066/376/original/upload_e92b207fe616514bb9f3004786722d51.png?1708936520) **Code**: ```python students = ['Kusum', 'Shubham', 'Pooja'] print(students[-1]) ``` **Output**: ```plaintext Pooja ``` **Code**: ```python students = ['Kusum', 'Shubham', 'Pooja'] print(students[-100]) ``` **Output**: ```plaintext # IndexError: list index out of range ``` ### Updating an Index in A List ```python students = ['Kusum', 'Shubham', 'Pooja'] print(students) ``` **Output**: ```python ['Kusum', 'Shubham', 'Pooja'] ``` - Updating user at index 3 **Code**: ```python students[3] = 'Ruben' print(students) ``` **Output**: ```python ['Kusum', 'Shubham', 'Pooja', 'Ruben'] ``` **Code**: ```python students[-100] ``` **Output**: ```python # IndexError: list index out of range ``` **Code**: ```python print(type(students)) ``` **Output**: ```python <class 'list'> ``` - Print even numbers till 10 **Code**: ```python a = list(range(0, 11, 2)) print(a) ``` **Output**: ```python [0, 2, 4, 6, 8, 10] ``` - Print first 10 even numbers **Code**: ```python a = list(range(0, 20, 2)) print(a) ``` **Output**: ```python [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] ``` **Explanation**: - Lists can be modified by assigning new values to specific indices. - Negative indices count from the end of the list. ### Iteration in a List ```python students = ['Kusum', 'Shubham', 'Pooja', 'Ruben', 'Aarushi', 'Vinoth', 'Veerendra'] ``` - `len()` gives you the number of elements in a list **Code**: ```python print(len(students)) ``` **Output**: ```python 7 ``` **Code**: ```python # Solution 1 n = len(students) for i in range(0, n): print(students[i]) ``` **Output**: ```python Kusum Shubham Pooja Ruben Aarushi Vinoth Veerendra ``` **Code**: ```python # Solution 2 for student in students: print(student) ``` **Output**: ```python Kusum Shubham Pooja Ruben Aarushi Vinoth Veerendra ``` ### Quiz 1 **Code**: ```python # quiz li = [-1, 0, 4] for i in li: if i > 0: print(i, end=' ') ``` **Output**: ```python 4 ``` **Explanation**: - Iterating through a list and printing positive numbers. ### Functions in a List ### len() - Returns the number of elements in a list. **Code**: ```python a = list(range(2, 6)) print(len(a)) ``` **Output**: ```plaintext 4 ``` ### append() - Appends an object to the end of the list. **Code**: ```python students = ['Kusum', 'Shubham', 'Pooja', 'Ruben', 'Aarushi', 'Vinoth', 'Veerendra'] students.append('Vicky') print(students) ``` **Output**: ```plaintext ['Kusum', 'Shubham', 'Pooja', 'Ruben', 'Aarushi', 'Vinoth', 'Veerendra', 'Vicky'] ``` **Code**: ```python a = [] a.append('Hi') print(a) ``` **Output**: ```plaintext ['Hi'] ``` ### insert() - The `insert` method is used to insert an element before the specified index in a list. **Code**: ```python a = [1, 2, 3, 4] a.insert(1, 'Aakar') print(a) ``` **Output**: ```plaintext [1, 'Aakar', 2, 3, 4] ``` **Explanation**: - The element 'Aakar' is inserted at index 1, shifting the original elements to the right. **Code**: ```python a = [1, 2, 3, 4] a.insert(-3, 'Aakar') print(a) ``` **Output**: ```plaintext [1, 'Aakar', 2, 3, 4] ``` **Explanation**: - The negative index `-3` is interpreted as counting from the end of the list, so 'Aakar' is inserted at index 2 from the end. **Code**: ```python a = [1, 2, 3, 4] a.insert(100, 'Aakar') print(a) ``` **Output 3**: ```plaintext [1, 2, 3, 4, 'Aakar'] ``` **Explanation**: - If the specified index is greater than the length of the list, the element is inserted at the end. **Code**: ```python a = [1, 2, 3, 4] a.insert(-100, 'Aakar') print(a) ``` **Output**: ```plaintext ['Aakar', 1, 2, 3, 4] ``` **Explanation**: - The negative index `-100` is interpreted as counting from the end of the list, so 'Aakar' is inserted at the beginning of the list. ### pop() - Removes and returns an item at the specified index (default last). - Raises `IndexError` if the list is empty or the index is out of range. **Code**: ```python students = ['Kusum', 'Shubham', 'Pooja', 'Ruben', 'Aarushi', 'Vinoth', 'Veerendra'] print(students.pop()) print(students) ``` **Output**: ```plaintext Veerendra ['Kusum', 'Shubham', 'Pooja', 'Ruben', 'Aarushi', 'Vinoth'] ``` **Code**: ```python a = [1, 2, 3, 4] print(a.pop(5)) print(a) ``` **Output**: ```plaintext # IndexError: pop index out of range ``` **Code**: ```python a = [] print(a.pop()) print(a) ``` **Output**: ```plaintext # IndexError: pop from an empty list ``` **Explanation**: - The `pop()` function removes and returns an item at a specified index. - Raises an `IndexError` if the index is out of range. ### remove() - Removes the first occurrence of a value. - Raises `ValueError` if the value is not present. **Code**: ```python students = ['Kusum', 'Shubham', 'Pooja', 'Ruben', 'Aarushi', 'Vinoth', 'Veerendra'] students.remove('Shubham') print(students) ``` **Output**: ```plaintext ['Kusum', 'Pooja', 'Ruben', 'Aarushi', 'Vinoth', 'Veerendra'] ``` **Code**: ```python a = [1, 2, 3, 2, 4] a.remove(2) print(a) ``` **Output**: ```plaintext [1, 3, 2, 4] ``` **Code**: ```python a = [1, 2, 3, 4] a.remove(5) print(a) ``` **Output**: ```plaintext # ValueError: list.remove(x): x not in the list ``` **Explanation**: - The `remove()` function removes the first occurrence of a specified value. - Raises a `ValueError` if the value is not present. ### Quiz ### Quiz 1 ```python li = [1, 2, 3] li.append('4') print(li) ``` **Answer**: [1, 2, 3, '4'] ### Quiz 2 ```python li = [] print(len(li)) ``` **Answer**: 0 ### Quiz 3 ```python li = [1, 2] print(li.pop()) ``` **Answer**: 2 ### Quiz 4 ```python li = [1, 3, 4] li.insert(0, 2) print(li) ``` **Answer**: [2, 1, 3, 4] ### Quiz 5 ```python li = [1, 2] print(li.remove(2)) ``` **Answer**: None ## Reverse **Code**: ```python a = [1, 2, 3] print(a.reverse()) print(a) ``` **Output**: ```plaintext [3, 2, 1] ``` **Code**: ```python a = [] print(a.reverse()) print(a) ``` **Output**: ```plaintext None [] ``` **Explanation**: - The `reverse()` method reverses the elements of a list in place. ## + operator - Concatenating two lists. - Creates a new list. **Code**: ```python a = [1, 2, 3] b = [4, 5, 6] c = a + b print(c) print(a) print(b) ``` **Output**: ```plaintext [1, 2, 3, 4, 5, 6] [1, 2, 3] [4, 5, 6] ``` ### extend() - Extend list by appending elements from the iterable. **Code**: ```python a = [1,2,3] b = [4,5,6] a.append(b) print(a) print(a[-1]) # not what we want ``` **Output**: ```plaintext [1, 2, 3, [4, 5, 6]] [4, 5, 6] ``` **Explanation**: - The append() method is used, but it appends the entire list b as a single element at the end of list a. **Code**: ```python a = [1,2,3] b = [4,5,6] a.extend(b) print(a) print(b) print(a[-1]) # not what we want ``` **Output**: ```plaintext [1, 2, 3, 4, 5, 6] [4, 5, 6] 6 ``` **Explanation**: - The extend() method is used, adding each element from list b individually to the end of list a. **Code**: ```python a = [1,2,3] a.extend(a) print(a) ``` **Output**: ```plaintext [1, 2, 3, 1, 2, 3] ``` **Explanation**: - The extend() method is used to add elements of list a to the end of list a, effectively doubling its content. ## in Operator - return True or False after searching list **Code**: ```python students = ['Kusum', 'Shubham', 'Pooja', 'Ruben', 'Aarushi', 'Aakar', 'Veerendra'] print('Aakar' in students) print('Kusum' in students) ``` **Output**: ```plaintext False True ``` **Explanation**: - The `in` operator is used to check if an element is present in a list. - The first print statement checks if 'Aakar' is in the list of students, resulting in `False`. - The second print statement checks if 'Kusum' is in the list of students, resulting in `True`. ### How to take List as Input? **Code**: ```python n = int(input()) a = [] for i in range(n): item = input() a.append(item) print(a) ``` **Output**: ```plaintext 5 a b c d e ['a', 'b', 'c', 'd', 'e'] ``` **Explanation**: - The code takes an integer `n` as input, then uses a loop to take `n` input items and appends them to a list `a`, resulting in a list of items. ## Split **Code**: ```python s = 'I-love-bananas' li = s.split('-') print(li) print(type(li)) ``` **Output**: ```plaintext ['I', 'love', 'bananas'] <class 'list'> ``` **Explanation**: - The `split` method is used to split a string `s` into a list of substrings based on the specified delimiter ('-'), creating a list `li`. **Code**: ```python s = 'I--love--bananas' li = s.split('--') print(li) print(type(li)) ``` **Output**: ```plaintext ['I', 'love', 'bananas'] <class 'list'> ``` **Explanation**: - Even if there are multiple consecutive delimiters, `split` correctly handles them and produces the desired list. **Code**: ```python n = int(input()) s = input() # always returns string "a b c d e" li = s.split(' ') print(li) ``` **Output**: ```plaintext 5 a b c d e ['a', 'b', 'c', 'd', 'e'] ``` **Explanation**: - The code takes an integer `n` and a space-separated string as input, then uses `split` to create a list `li` of individual items. **Code**: ```python # INPUT # 5 # 12 14 15 16 17 n = int(input()) s = input() # always returns string "a b c d e" li = s.split(' ') new_li = [] for item in li: new_li.append(int(item)) print(new_li) ``` **Output**: ```plaintext 5 1 2 3 4 5 [1, 2, 3, 4, 5] ``` **Explanation**: - The code converts a space-separated string of numbers into a list of integers, demonstrating the use of `split` and conversion to integers. **Code**: ```python # INPUT # 5 # 12 14 15 16 17 n = int(input()) s = input() # always returns string "a b c d e" li = s.split(' ') for index in range(len(li)): li[index] = int(li[index]) print(li) ``` **Output**: ```plaintext 5 1 2 3 4 5 [1, 2, 3, 4, 5] ``` **Explanation**: - Similar to the previous example, this code converts a space-separated string of numbers into a list of integers using a loop.**Explanation**: ### Problem Given a List of Student Marks, Count the Number of Student Who Failed :::info Please take some time to think about the solution approach on your own before reading further..... ::: **Code**: ```python n = int(input()) s = input() # always returns string "a b c d e" marks = s.split(' ') for index in range(len(marks)): marks[index] = float(marks[index]) print(marks) # ------------------------ count = 0 for index in range(len(marks)): if marks[index] <= 30: count += 1 print(count) ``` **Output**: ```plaintext 5 10 20 30 40 50 [10.0, 20.0, 30.0, 40.0, 50.0] 3 ``` **Explanation**: - The code first takes an integer `n` as input, representing the number of students. Then, it takes a string `s` as input, which contains space-separated marks of students in the form of "a b c d e". - The string of marks is split into a list of strings using the `split` method, and then each element in the list is converted to a floating-point number using a loop. - The list of marks is printed as output. - The code initializes a variable `count` to 0 and then iterates through the list of marks. For each mark, if it is less than or equal to 30, the `count` is incremented. - Finally, the count of students who failed (marks <= 30) is printed as output. **Output Explanation**: - For the given input "5" and "10 20 30 40 50", the list of marks after conversion to float is `[10.0, 20.0, 30.0, 40.0, 50.0]`. - Among these marks, three students have marks less than or equal to 30 (10.0, 20.0, and 30.0). Therefore, the count of students who failed is printed as `3`.