Кодинг-марафон. Задача 8.
Напишите функцию flatten, которая будет принимать на вход список с любой вложенностью (список в списке), а также второй параметр — глубину распаковки.
Функция должна вернуть список, где вложенные элементы соответствующего уровня распакованы, то есть вложенное превращается в плоское.
Если второй аргумент не передан, функция должна вернуть одномерный список, то есть все вложенные списки должны быть распакованы.
Сигнатура: def flatten(a_list:list, depth:int=0)->list
flatten([1, [2, 3]]) == [1, 2, 3] flatten([1, [2, [3]]], depth=1) == [1, 2, [3]] flatten([1, [2, [3]]], depth=2) == [1, 2, 3] flatten([1, [2, 3]], depth=100) == [1, 2, 3]
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 def flatten(a_list: list, depth: int = -1) -> list:
result = []
for element in a_list:
if depth == 0 or type(element) is not list:
result.append(element)
else:
result.extend(flatten(element, depth - 1))
return result Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…
Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…
Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…
В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…
Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…
Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…