sum( ([f(x),g(x)] for x in range(n)), [] )
C'est l'équivalent d' [f(1),g(1)] + [f(2),g(2)] + [f(3),g(3)] + ...
Vous pouvez aussi penser à ce que:
def flatten(list):
...
flatten( [f(x),g(x)] for x in ... )
remarque: La bonne façon est d'utiliser des itertools.chain.from_iterable
ou la double compréhension de liste. (Il ne nécessite pas de recréer la liste de tous les +, a donc O(N) plutôt que de O(N^2) les performances.) Je vais encore utiliser sum(..., [])
quand je veux un rapide one-liner ou je suis pressé, ou lorsque le nombre de termes combiné est bornée (par exemple, < = 10). C'est pourquoi j'ai toujours le mentionner ici, avec cette mise en garde. Vous pouvez également utiliser les tuples: ((f(x),g(x)) for ...), ()
(ou par khachik commentaire, d'avoir un générateur de fg(x) ce qui donne un deux-tuple).