J'ai donc quelques compréhensions de liste qui ressemblent à ceci.Compréhension de liste avec calcul coûteux
li = [some_computation(x) for x in y if some_computation(x)]
Où je veux que les valeurs qui sont truthy par rapport à some_computation
.
- Est-ce que cela calcule deux fois
some_computation(x)
comme la compréhension de la liste semble le faire? Sisome_computation
est cher, je vraiment ne veulent pas veulent cela. (Je pense que c'est probablement le cas:(
) - Y at-il une meilleure façon de le faire? Peut-être de le casser dans une boucle régulière et ajouter si seulement si
some_computation(x)
, mais j'aime les compréhensions.
Cela est venu plusieurs fois avant, mais semblent ne peut le trouver ... de toute façon ... vous pouvez imbriquer un gen-exp dans votre liste-maquette, par exemple: 'li = [el pour el dans (some_func (x) pour x dans y) si el] '... –
Oui, la fonction' some_computation' sera évaluée deux fois dans Python 2.x et 3.x – Jaco
@JonClements Je pense avoir trouvé c'est ici: https: // stackoverflow.com/questions/130262/how-do-i-efficace-filter-calculé-values-within-a-python-list-comprehension? rq = 1 Merci pour votre réponse! –