Вам не нужно перечислять здесь понимания.
Вот функциональное решение с помощью operator.itemgetter
и itertools.chain
:
from itertools import chain
from operator import itemgetter
parent = [[{'x': 1, 'y': 2},
{'x': 3, 'y': 8}],
[{'x': 8, 'y': 5},
{'x': 9, 'y': 6}]]
x, y = zip(*map(itemgetter('x', 'y'), chain.from_iterable(parent)))
print(x) # (1, 3, 8, 9)
print(y) # (2, 8, 5, 6)
В качестве альтернативы вы можете использовать вложенные списки:
x = [i['x'] for L in parent for i in L]
y = [i['y'] for L in parent for i in L]
Обратите внимание, что порядок вложенных пониманий согласуется с обычным циклом for
:
x = []
for L in parent:
for i in L:
x.append(i['x'])