Python function `flatten_nested_list(nested_list)

Create a Python function flatten_nested_list(nested_list) that takes a list of lists (which may contain other nested lists) and returns a single flattened list containing all the elements in a depth-first order.
Example:
python
Example input:
nested_list = [1, [2, [3, 4], 5], 6, [7, 8, [9, [10]]]]
Expected output:
flattened_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Constraints:

  1. The input list can contain integers, other lists, or both.
  2. The function should handle arbitrarily deep nesting.
  3. You are not allowed to use Python's built-in itertools.chain or similar built-in functions for flattening the list.
    Test Cases:
    python
    Test Case 1:
    assert flatten_nested_list([1, 2, [3, 4], [5, [6, 7]]]) == [1, 2, 3, 4, 5, 6, 7]
    Test Case 2:
    assert flatten_nested_list([[], [1], [[2, 3]], [4, [5, []]]]) == [1, 2, 3, 4, 5]
    Test Case 3:
    assert flatten_nested_list([[[[1, 2], 3], 4], 5, [], [6, [7, [8, [9]]]]]) == [1, 2, 3, 4, 5, 6, 7, 8, 9]
    Write the flatten_nested_list function that passes all the above test cases.
    To create a function that flattens a nested list in Python, we can use recursion to handle the depth-first order of the elements. Below is the implementation of the flatten_nested_list function, along with some test cases to ensure its correctness. def flatten_nested_list(nested_list): flattened_list = [] for element in nested_list: if isinstance(element, list): # Recursively extend the flattened list with the flattened version of the current element flattened_list.extend(flatten_nested_list(element)) else: # Append the element directly if it's not a list flattened_list.append(element) return flattened_list # Test Cases assert flatten_nested_list([1, 2, [3, 4], [5, [6, 7]]]) == [1, 2, 3, 4, 5, 6, 7] assert flatten_nested_list([[], [1], [[2, 3]], [4, [5, []]]]) == [1, 2, 3, 4, 5] assert flatten_nested_list([[[[1, 2], 3], 4], 5, [], [6, [7, [8, [9]]]]]) == [1, 2, 3, 4, 5, 6, 7, 8, 9] print("All test cases passed!") Explanation of the Code: - Function Definition: The function flatten_nested_list is defined to take one parameter nested_list, which can be a list containing integers and/or other lists. - Flattening Process: We initialize an empty list flattened_list to collect the flattened elements. - Iteration: We iterate through each element in nested_list.- If an element is a list (checked using isinstance), we call the function recursively on that element and extend flattened_list with the result. - If the element is not a list (i.e., it’s an integer), we simply append it to flattened_list. - Return Statement: Finally, we return flattened_list which now contains all elements in a single flat structure. Test Cases: The test cases provided check various scenarios: 1. A mix of integers and nested lists. 2. Lists with empty sub-lists. 3. Deep nesting to ensure that the function handles all levels correctly. When you run this code, you should see "All test cases passed!" if everything is working correctly.      

Sample Answer