transform_ops=[AAFRemoveVideo(...,self.aaf_file,...),AAFInsertVideo(...,self.aaf_file,...),AAFRelinkAudio(...,self.aaf_file,...)]ifnotall([op.run()foropintransform_ops]):logging.error("One or more transformations didn't go all the way.")
tu devrais utiliser la syntaxe
transform_ops=[AAFRemoveVideo(...,self.aaf_file,...),AAFInsertVideo(...,self.aaf_file,...),AAFRelinkAudio(...,self.aaf_file,...)]ifnotall(op.run()foropintransform_ops):logging.error("One or more transformations didn't go all the way.")
Ce qui change, c'est qu'au lieu de générer une liste contenant le résultat de toute les ops et qui sera ensuite parcourue par la fonction all(), la fonction all() va pouvoir directement évaluer le résultat de tes opérations. Ce qui fait que tu te passes de la création d'une liste temporaire, et tu stops le traitement dès la première erreur rencontré. Après, si ta liste est petite et que tes traitement sont rapides, limite osef. Mais comme ça marche aussi bien pour les petits cas que les grands cas, autant prendre l'habitude de l'utiliser partout ;)
# Un exemple plus succinct# Ce code va générer un tableau de 1M élémentsall([i!=1foriinrange(1000000)]# Ce code va générer seulement 2 élémentsall(i!=1foriinrange(1000000))
# Générateurs python
Posté par jtremesay (site web personnel) . En réponse au journal Python, Lies and Video Files. Évalué à 9.
Au lieu de
tu devrais utiliser la syntaxe
Ce qui change, c'est qu'au lieu de générer une liste contenant le résultat de toute les ops et qui sera ensuite parcourue par la fonction
all(), la fonctionall()va pouvoir directement évaluer le résultat de tes opérations. Ce qui fait que tu te passes de la création d'une liste temporaire, et tu stops le traitement dès la première erreur rencontré. Après, si ta liste est petite et que tes traitement sont rapides, limite osef. Mais comme ça marche aussi bien pour les petits cas que les grands cas, autant prendre l'habitude de l'utiliser partout ;)