Вы можете просто транспонировать список namedtuple
s и распаковать его:
xs, ys = zip(*examples)
Например:
from collections import namedtuple
example = namedtuple('example',['x','y'])
examples = [example(i, j) for i in range(5) for j in range(5)]
xs, ys = zip(*examples)
print(xs)
print(ys)
Вывод:
(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4)
(0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4)
Любые решения с использованием списочных представлений излишне запутаны, и их лучше заменить двумя приведенными вами списками.Если вы хотите сделать это в одной строке, самый понятный и наиболее читаемый способ с использованием списков - это
xs, ys = [e.x for e in examples], [e.y for e in examples]
Однако, на мой взгляд, zip(*examples)
, вероятно, еще лучше.