Articles
Screencasts
Exercises
Training
Pastebin
Gift
/
Sign Up
Sign In
Don't use sum for list flattening
Editable Code
""" Don't use sum for list flattening Using sum on a list results in a loop inside a loop (a new list is made for each new sub-list) so the more sub lists there are, the bigger the timing difference will be. More at https://pym.dev/flatten-a-list-in-python/ """ import itertools import random import timeit list_of_lists = [ [random.randint(1, 1000) for _ in range(3)] for _ in range(15_000) ] def flatten_chain(iterables): return list(itertools.chain.from_iterable(iterables)) def flatten_comp(iterables): return [ item for iterable in iterables for item in iterable ] def flatten_sum(iterables): return sum(iterables, []) def time(function): return round(timeit.timeit( f"{function}(list_of_lists)", number=5, globals=globals(), )*1000) print(f"{time('flatten_chain'): 4}ms itertools.chain.from_iterable") print(f"{time('flatten_comp'): 4}ms comprehension") print(f"{time('flatten_sum'): 4}ms sum")
1594 views
Copy
Code copied
Run
in Browser
pym.dev/p/2hwud/
URL copied
Need to share some Python code?
New Python snippet