On Tue, Oct 11, 2022 at 12:32:23PM -0700, SquidBits _ wrote:
Does anyone else think there should be a flatten () function, which just turns 
a multi-dimensional list into a one-dimensional list in the order it's in. e.g.

[[1,2,3],[4,5,6,7],[8,9]] becomes [1,2,3,4,5,6,7,8,9].

I have had to flatten lists quite a few times and it's quite tedious to type out. It feels like this should be something built in to python, anyone else think this way?

I typically don't mind things that are one liners, especially if the one liner is a list comprehension.


def flatten1(inlist):
    return [l for sublist in inlist for l in sublist]

givenlist = [[1, 2, 3], [4, 5, 6, 7], [8, 9]]
print(flatten1(givenlist))

def flatten2(inlist):
    return sum(inlist, [])

print(flatten2(givenlist))


Looking up "flatten" in python's source reveals the (not at all obvious to me as I don't use chain) alternative


import itertools
def flatten3(inlist):
    return list(itertools.chain.from_iterable)

print(flatten3(givenlist))


I notice that "flatten" appears many times in python's source. I didn't check how many times it's used with the same meaning, though.

- DLD
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to