Напишите функцию flatten, которая будет принимать на вход список с любой вложенностью (список в списке), а также второй параметр — глубину распаковки.
Функция должна вернуть список, где вложенные элементы соответствующего уровня распакованы, то есть вложенное превращается в плоское.
Если второй аргумент не передан, функция должна вернуть одномерный список, то есть все вложенные списки должны быть распакованы.
- Функция не должна бросать исключений!
- Предполагается, что глубина распаковки всегда положительна (если указана).
- Если параметр глубины больше реальной вложенности, то функция просто распаковывает все списки, как если бы глубина не была передана.
- Предполагается, что могут быть только вложенные списки (не кортежи или другие контейнеры).
def flatten(a_list: list, depth: int = 0) -> list: count = 0 while True: result = [] has_list = False for element in a_list: if type(element) is list: result.extend(element) has_list = True else: result.append(element) a_list = result count += 1 if not has_list or (0 < depth == count): break return result
![](https://mob25.com/wp-content/uploads/2023/03/70.png)