greedsin
greedsin

Reputation: 1272

Flatten a list of lists of tuples

I have read several posts on the question "how to flatten lists of lists of lists ....". And I came up with this solution:

points = [[[(6,3)],[]],[[],[]]] 
from itertools import chain
list(chain.from_iterable(points))

However my list looks sometimes like this:

[[[(6,3)],[]],[[],[]]] 

Not sure if it is correct but I hope you understand.

The point is the leaf element is a tuple and when calling the above code it also removes the tuple and just returns [6,3].

So what could i do to just get [(6,3)] ?

Upvotes: 1

Views: 1282

Answers (2)

SparkAndShine
SparkAndShine

Reputation: 18017

How about this,

lists = [[[(6,3)],[]],[[],[]]] 

r = [t for sublist in lists for l in sublist for t in l]

print(r)
# [(6, 3)]

Upvotes: 1

János Farkas
János Farkas

Reputation: 471

maybe its not the best solution, but it works fine:

def flat(array):
    result = []
    for i in range(len(array)):
        if type(array[i]) == list:
            for j in flat(array[i]):
                result.append(j)
        else:
            result.append(array[i])
    return result     

print flat([[[(6,3)],[]],[[],[]]] ) 

and the result is:

>>> 
[(6, 3)]
>>> 

Upvotes: 0

Related Questions