Share This
Связаться со мной
Крути в низ
Categories
//Распаковка вложенных списков: задача на написание кода на Python

Распаковка вложенных списков: задача на написание кода на Python

13.08.2021Category : Python

Кодинг-марафон. Задача 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 = 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

raspakovka vlozhennyh spiskov zadacha na napisanie koda na python 8d0d098 - Распаковка вложенных списков: задача на написание кода на Python

Кодинг-марафон по Python

Реши 10 задач и выиграй 5500 рублей

Подписаться ×

  • 1 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close