MODULE 2:
Lists
Easy (10 Questions)
    1. How do you create a list in Python?
            A) {1, 2, 3}
            B) (1, 2, 3)
            C) [1, 2, 3] ✅
            D) list(1, 2, 3)
    2. What will len([1, 2, 3, 4]) return?
            A) 3
            B) 4 ✅
            C) 5
            D) Error
    3. How do you access the first element of a list my_list?
            A) my_list[0] ✅
            B) my_list(0)
            C) my_list{0}
            D) my_list.first()
    4. What will print([1, 2, 3] + [4, 5]) output?
            A) [1, 2, 3, 4, 5] ✅
            B) [[1, 2, 3], [4, 5]]
            C) [1, 2, 3, [4, 5]]
            D) Error
    5. How do you change the value of the second item in a list?
        my_list = [10, 20, 30]
            A) my_list(1) = 25
            B) my_list[1] = 25 ✅
            C) my_list{1} = 25
            D) my_list.change(1, 25)
    6. What does list(range(4)) return?
            A) [0, 1, 2, 3] ✅
           B) [1, 2, 3, 4]
           C) (0, 1, 2, 3)
           D) {0, 1, 2, 3}
   7. What will print([1, 2, 3] * 2) output?
           A) [1, 2, 3, 1, 2, 3] ✅
           B) [2, 4, 6]
           C) [[1, 2, 3], [1, 2, 3]]
           D) Error
   8. What method adds an element to the end of a list?
           A) push()
           B) add()
           C) append() ✅
           D) insert()
   9. What is the output of print([1, 2, 3].index(2))?
           A) 1 ✅
           B) 2
           C) 0
           D) Error
   10. What does my_list.pop() do?
       A) Removes and returns the last element ✅
       B) Removes and returns the first element
       C) Deletes the list
       D) Causes an error
Medium (6 Questions)
   11. What will my_list = [1, 2, 3]; my_list.append([4, 5]) result in?
       A) [1, 2, 3, 4, 5]
       B) [1, 2, 3, [4, 5]] ✅
       C) [[1, 2, 3], [4, 5]]
       D) Error
   12. What happens if you use my_list.remove(10) when 10 is not in my_list?
        A) It removes the first element
        B) It does nothing
        C) It raises a ValueError ✅
        D) It removes the last element
    13. What does my_list.reverse() do?
        A) Creates a new reversed list
        B) Returns a reversed list
        C) Reverses the list in-place ✅
        D) Sorts the list
    14. What will print([0, 1, 2][::-1]) output?
        A) [0, 1, 2]
        B) [2, 1, 0] ✅
        C) [0, 2, 1]
        D) Error
    15. What does my_list.extend([4, 5]) do?
        A) Adds [4, 5] as a single element
        B) Extends my_list with individual elements ✅
        C) Creates a new list
        D) Returns a reversed list
    16. What will print([1, 2, 3, 4][1:3]) output?
        A) [1, 2, 3]
        B) [2, 3] ✅
        C) [3, 4]
        D) Error
Difficult (4 Questions)
    17. What happens if you modify a list inside a function?
    def modify(lst):
      lst.append(4)
    my_list = [1, 2, 3]
    modify(my_list)
    print(my_list)
        A) [1, 2, 3]
        B) [1, 2, 3, 4] ✅
        C) None
        D) Error
    Explanation: Lists are mutable and passed by reference, so my_list is modified inside the
function.
    18. What will print([[0] * 3] * 3) output?
        A) [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
        B) [[0, 0, 0]] * 3
        C) [[0, 0, 0], [0, 0, 0], [0, 0, 0]] but all rows reference the same list ✅
        D) Error
        Explanation: This creates three references to the same inner list, so modifying one row
    affects all rows.
    19. What does sorted([3, 2, 1], reverse=True) return?
        A) [3, 2, 1] ✅
        B) [1, 2, 3]
        C) [3, 1, 2]
        D) Error
        Explanation: The reverse=True parameter sorts the list in descending order.
    20. What does copy.deepcopy() do for a list?
        A) Copies only references
        B) Creates a new reference
        C) Creates a deep copy ✅
        D) Creates a shallow copy
        Explanation: A deep copy creates a completely independent copy of a nested list.
Dictionaries and Structuring Data
Easy (10 Questions)
    1. How do you define a dictionary in Python?
            A) { 'name': 'Alice', 'age': 25 } ✅
            B) [ 'name': 'Alice', 'age': 25 ]
        C) ( 'name': 'Alice', 'age': 25 )
        D) dict( 'name': 'Alice', 'age': 25 )
2. What will len({ 'a': 1, 'b': 2, 'c': 3 }) return?
        A) 2
        B) 3 ✅
        C) 1
        D) Error
3. What will my_dict = {'a': 1}; print(my_dict['a']) output?
        A) 1 ✅
        B) 'a'
        C) None
        D) Error
4. How do you check if a key exists in a dictionary?
        A) if 'key' in my_dict: ✅
        B) if my_dict.has('key'):
        C) if 'key' exists my_dict:
        D) if my_dict['key']:
5. What does my_dict.get('missing_key', 'default') return if 'missing_key' is not found?
        A) None
        B) 'default' ✅
        C) 0
        D) Error
6. What method removes a key-value pair from a dictionary?
        A) delete()
        B) remove()
        C) pop() ✅
        D) discard()
7. What does my_dict.keys() return?
        A) A list of keys
        B) A dictionary
        C) A view object of keys ✅
           D) An error
   8. What is the output of print(list({'x': 1, 'y': 2}))?
           A) ['x', 'y'] ✅
           B) [1, 2]
           C) [['x', 1], ['y', 2]]
           D) Error
   9. How do you merge two dictionaries in Python 3.9+?
           A) dict1 + dict2
           B) dict1.merge(dict2)
           C) dict1 | dict2 ✅
           D) dict1.append(dict2)
   10. What will my_dict = {'a': 1, 'b': 2}; my_dict.clear(); print(my_dict) output?
                A) {'a': 1, 'b': 2}
                B) {} ✅
                C) None
                D) Error
Medium (6 Questions)
   11. What does my_dict.values() return?
                A) A list of values
                B) A dictionary
                C) A view object of values ✅
                D) An error
   12. What happens if you try to access a key that doesn’t exist using my_dict['missing']?
                A) Returns None
                B) Returns 0
                C) Raises a KeyError ✅
                D) Creates the key automatically
   13. What does my_dict.items() return?
                A) A list of key-value pairs
                B) A dictionary
                C) A view object of key-value pairs ✅
                D) A tuple
    14. What is the output of dict.fromkeys(['a', 'b'], 0)?
                A) {'a': None, 'b': None}
                B) {'a': 0, 'b': 0} ✅
                C) {'a': '', 'b': ''}
                D) Error
    15. Which method can update multiple key-value pairs at once?
                A) add()
                B) append()
                C) update() ✅
                D) extend()
    16. Given d = {'a': 1, 'b': 2}, what will print(d.popitem()) output?
                A) ('a', 1)
                B) ('b', 2) ✅
                C) ('a', 2)
                D) Error
Difficult (4 Questions)
    17. What happens if you modify a dictionary while iterating over it?
                A) The loop continues normally
                B) It raises a RuntimeError ✅
                C) It updates in real-time
                D) It skips modified items
       Explanation: Modifying a dictionary while iterating raises a RuntimeError to prevent
unexpected behavior.
    18. What is the difference between defaultdict and a normal dictionary?
                A) defaultdict provides a default value for missing keys ✅
                B) defaultdict is immutable
                C) defaultdict does not allow deletion
                D) There is no difference
    Explanation: defaultdict (from collections) assigns a default value for missing keys.
19. What will dict1 = {'x': 10}; dict2 = dict1; dict2['x'] = 20; print(dict1['x']) output?
             A) 10
             B) 20 ✅
             C) None
             D) Error
    Explanation: dict1 and dict2 reference the same dictionary in memory.
20. What will d = {'a': 1, 'b': 2}; d.setdefault('c', 3); print(d) output?
             A) {'a': 1, 'b': 2, 'c': 3} ✅
             B) {'a': 1, 'b': 2}
             C) {'a': 1, 'b': 2, 'c': None}
             D) Error
    Explanation: .setdefault('c', 3) adds 'c': 3 only if 'c' is not already in the dictionary.