I want to write a function that extracts elements from deep nested tuples and lists, say I have something like this
l = (\'THIS\', [(\'THAT\', [\'a\', \'b\']),
Assuming that the first element of each tuple can be disregarded, and we should recurse with list that is the second element, we can do this:
def extract(node):
if isinstance(node, tuple):
return extract(node[1])
if isinstance(node, list):
return [item for sublist in [extract(elem) for elem in node] for item in sublist]
return node
The list comprehension is a little dense, here's the same with loops:
def extract(node):
if isinstance(node, tuple):
return extract(node[1])
if isinstance(node, list):
result = []
for item in node:
for sublist in extract(item):
for elem in sublist:
result.append(elem)
return result
return node