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 для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

© Speccy 2020 / All rights reserved

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