Pensa a una funzione che sto chiamando per i suoi effetti collaterali, non restituire valori (come la stampa sullo schermo, l'aggiornamento della GUI, la stampa su un file, ecc.).
def fun_with_side_effects(x):
...side effects...
return y
Ora, è Pythonic usare le liste di comprensione per chiamare questa funzione:
[fun_with_side_effects(x) for x in y if (...conditions...)]
Nota che non salvo l'elenco da nessuna parte
O dovrei chiamare questa funzione in questo modo:
for x in y:
if (...conditions...):
fun_with_side_effects(x)
Quale è meglio e perché?
for ... in
viene utilizzato in entrambi i casi, portando a domande come questa!