Eventuali duplicati:
Is it Pythonic to use list comprehensions for just side effects?Utilizzando la comprensione come una scorciatoia per chiamare un metodo più volte
A volte in un file script scriverò qualcosa come [foo(x) for x in (1,2,3)]
. Non mi interessa il valore di ritorno (se presente), ho appena preferisco la scorciatoia anziché utilizzare
for x in (1,2,3):
foo(x)
Ma in questa comprensione che sto creando un oggetto di lista ci che in realtà non va da nessuna parte (Credo che viene garbage collection perché nessuno mantiene un riferimento ad essa)
>>> L = list('SxPyAMz')
>>> [L.remove(c) for c in ('x', 'y', 'z')]
[None, None, None]
>>> print L
['S', 'P', 'A', 'M']
la mia domanda:? è questa cattiva pratica, o è del tutto innocuo per l'oggetto da mago inosservati? Se è brutto, c'è un 1-liner migliore per questo tipo di scorciatoie?
non mi piace questi perché la mancanza di ritorno a capo e un rientro è contro guida di stile pitone. – wim
IMHO la versione one-liner delle strutture di controllo Python è accettabile nei luoghi in cui si desidera utilizzare una comprensione delle liste. Il tuo esempio ha un nome di variabile maiuscolo che è (di nuovo, IMHO) una violazione molto peggiore di PEP8, dal momento che CamelCase dovrebbe essere riservato ai nomi di classe e instance_should_use_underscores. È più semplice e più facile da leggere rispetto a qualsiasi alternativa che conosca. –
Sì, ma era solo per la dimostrazione all'interprete. Non mi vedresti usando una lista chiamata L nel codice di produzione. – wim