Files
30-seconds-of-code/snippets/deep_flatten.md
Angelos Chalaris f10d3f018b Update some snippets
2019-08-20 10:38:09 +03:00

716 B

title, tags
title tags
deep_flatten list,recursion,intermediate

Deep flattens a list.

Use recursion. Define a function, spread, that uses either list.extend() or list.append() on each element in a list to flatten it. Use list.extend() with an empty list and the spread function to flatten a list. Recursively flatten each element that is a list.

def spread(arg):
  ret = []
  for i in arg:
    if isinstance(i, list):
      ret.extend(i)
    else:
      ret.append(i)
  return ret

def deep_flatten(lst):
  result = []
  result.extend(
    spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
  return result
deep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]