sum( ([f(x),g(x)] for x in range(n)), [] )
Isso é equivalente a [f(1),g(1)] + [f(2),g(2)] + [f(3),g(3)] + ...
Você também pode pensar nisso como:
def flatten(list):
...
flatten( [f(x),g(x)] for x in ... )
nota: O jeito certo é usar itertools.chain.from_iterable
ou a compreensão de lista dupla. (Não requer a recriação da lista em todos os +, portanto, tem desempenho O (N) em vez de desempenho O (N ^ 2).) Ainda vou usar sum(..., [])
quando quero uma linha rápida rápida ou estou com pressa , ou quando o número de termos sendo combinados é limitado (por exemplo, <= 10). É por isso que ainda o menciono aqui, com esta ressalva. Você também pode usar tuplas: ((f(x),g(x)) for ...), ()
(ou pelo comentário de khachik, tendo um gerador fg (x) que resulta em duas tuplas).