Source code for pyfunctools.flatten

from pyfunctools import Array

[docs] def flatten(arr:list, level=1) -> list: """Flat list. Args: arr ( list ) : original list level ( int | str ) : sublist level to planar Note: Only accept whole levels or equal to 'all' Raises: ValueError : The level parameter entered is not integer or is different from 'all' Examples: >>> flatten([1, [2, [3, [4, 5]]]]) [1, 2, [3, [4, 5]]] >>> flatten([1, [2, [3, [4, 5]]]], 'all') [1, 2, 3, 4, 5] >>> flatten([1, [2, [3, [4, 5]]]], 0) [1, [2, [3, [4, 5]]]] """ if level != 'all' and not isinstance(level, int): raise ValueError(f'{level} is not a valid level') def func(acc, item, *kwargs): if Array.is_list(item) and (level == 'all' or level > 0): return acc.extend(flatten(item, level - 1 if isinstance(level, int) else level)) return acc.append(item) return Array(arr).reduce(func, [])