sum( ([f(x),g(x)] for x in range(n)), [] )
Cela équivaut à [f(1),g(1)] + [f(2),g(2)] + [f(3),g(3)] + ...
Vous pouvez également le considérer comme:
def flatten(list):
...
flatten( [f(x),g(x)] for x in ... )
note: La bonne manière est d'utiliser itertools.chain.from_iterable
ou la double compréhension de liste. (Il ne nécessite pas de recréer la liste tous les +, donc a des performances O (N) plutôt que des performances O (N ^ 2).) J'utiliserai sum(..., [])
quand même quand je veux un one-liner rapide ou je suis pressé , ou lorsque le nombre de termes combinés est borné (par exemple <= 10). C'est pourquoi je le mentionne encore ici, avec cette mise en garde. Vous pouvez également utiliser des tuples: ((f(x),g(x)) for ...), ()
(ou par commentaire de khachik, avoir un générateur fg (x) qui donne un deux-tuple).