Disons que j'ai une fonction de générateur qui produit deux valeurs:Récupération toutes les valeurs de iterator de la fonction générateur
def gen_func():
for i in range(5):
yield i, i**2
Je veux récupérer toutes les valeurs de iterator de ma fonction. Actuellement, j'utilise cet extrait de code à cette fin:
x1, x2 = [], []
for a, b in gen_func():
x1.append(a)
x2.append(b)
Cela fonctionne pour moi, mais semble un peu maladroit. Existe-t-il un moyen plus compact de coder cela? Je pensais quelque chose comme:
x1, x2 = map(list, zip(*(a, b for a, b in gen_func())))
Ceci, cependant, me donne juste une erreur de syntaxe. PS: Je suis conscient que je ne devrais probablement pas utiliser un générateur à cette fin, mais j'en ai besoin ailleurs.
Modifier: N'importe quel type pour x1
et x2
fonctionnerait, cependant, je préfère la liste pour mon cas.
Quel est le type désiré de x1 et x2? Liste? Tuple? Quelque chose d'aussi long que c'est itérable? – Kevin
Je préférerais la liste. Merci pour la remarque, j'ai mis à jour ma question. – Nyps