Code Explanation:
1. Define the function flatten_once(lst)
def flatten_once(lst):
This function is a generator that flattens a list only one level deep.
2. Loop over the list elements
for sub in lst:
Iterates over each item in the list lst.
For the input:
[1, [2, 3], 4]
The elements in order are:
1 (not a list)
[2, 3] (a list)
4 (not a list)
3. Check if element is a list
if isinstance(sub, list):
If the current element is a list, we want to yield its items individually.
4. Yield items based on type
If it's a list:
yield from sub
For [2, 3], this means yield 2, then 3.
If it's not a list:
yield sub
For 1 and 4, they are yielded directly.
How it Processes the Input
Given:
flatten_once([1, [2, 3], 4])
The generator yields:
1 → from yield sub
2 → from yield from [2, 3]
3 → from yield from [2, 3]
4 → from yield sub
Final Output
[1, 2, 3, 4]
Download Book - 500 Days Python Coding Challenges with Explanation
.png)

0 Comments:
Post a Comment