From 45b97225661f754de3340efb96acaaa2f79e4b59 Mon Sep 17 00:00:00 2001 From: Rohit Tanwar Date: Tue, 16 Jan 2018 20:24:14 +0530 Subject: [PATCH] deep_flatten --- snippets/deep_flatten.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 snippets/deep_flatten.md diff --git a/snippets/deep_flatten.md b/snippets/deep_flatten.md new file mode 100644 index 000000000..12649d150 --- /dev/null +++ b/snippets/deep_flatten.md @@ -0,0 +1,25 @@ +### deepFlatten + +Deep flattens a list. + +Use recursion. Use `list.extend()` with an empty array (`result`) and the spread function to flatten a list. Recursively flatten each element that is a list. + +```python +def spread(arg): + ret = [] + for i in arg: + if isinstance(i, list): + ret.extend(i) + else: + ret.append(i) + return ret + + def deep_flatten(arr): + result = [] + result.extend(spread(list(map(lambda x : deep(x) if type(x) == list else x,arr)))) + return result +``` + +```python +deep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5] +``` \ No newline at end of file