Handling loop variable scope in nested loops with Python's list comprehensions
Does anyone know how to I'm learning this framework and I'm working with an scenario with using loop variables in nested list comprehensions in Python. Specifically, I want to create a flattened list from a list of lists, but I'm having trouble with variable scope inside the inner comprehension. Here's my code snippet: ```python nested_list = [[1, 2, 3], [4, 5], [6]] flat_list = [num for sublist in nested_list for num in sublist if num > 2] print(flat_list) ``` This code is working fine and returns `[3, 4, 5, 6]` as expected. However, when I try to add another condition based on the outer loop variable, like so: ```python flat_list = [num for sublist in nested_list if len(sublist) > 1 for num in sublist if num > 2] ``` I receive an empty list `[]`. I thought the `len(sublist) > 1` condition should filter the sublists properly, but it seems to be affecting the inner loop. I'm unsure how to incorporate both conditions correctly while retaining the values of `num` from the inner loop. I've also tried using regular for loops instead of list comprehensions: ```python flat_list = [] for sublist in nested_list: if len(sublist) > 1: for num in sublist: if num > 2: flat_list.append(num) ``` This works as expected, returning `[3, 4, 5]`. However, I would prefer to use a more concise list comprehension. Could someone explain why the second comprehension doesn't yield the expected results and how I can correctly use both conditions while maintaining the desired output? I'm working on a mobile app that needs to handle this. Thanks, I really appreciate it! For context: I'm using Python on Debian.