Source code for endogen.tools
from typing import List, Iterable, Any, Sequence
from functools import wraps
from time import time
def measure(f):
@wraps(f)
def wrapper(*args, **kwargs):
start = time()
result = f(*args, **kwargs)
end = time()
print(f"Elapsed time: {end-start}")
return result
return wrapper
[docs]
def flatten_recursive_generator(lst: List[Any]) -> Iterable[Any]:
"""Flatten a list using recursion."""
for item in lst:
if isinstance(item, list):
yield from flatten_recursive(item)
else:
yield item
def flatten(list_of_lists: Sequence) -> Sequence:
return [item for sublist in list_of_lists for item in sublist]
def flatten_recursive(list_of_lists: Sequence) -> Sequence:
return list(flatten_recursive_generator(list_of_lists))