Вы можете добавить другой уровень итерации в понимание списка, чтобы получить плоский список:
[i**exp for i in range(10) for exp in [1,2]]
# [0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]
Или вы можете использовать itertools.chain
:
from itertools import chain
list(chain.from_iterable((i,i**2) for i in range(10)))
# [0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]
Хотя я бы рассмотрел numpy
для такой задачи:
(np.arange(10)**np.arange(1,3)[:,None]).ravel('F')
array([ 0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8,
64, 9, 81], dtype=int32)