On Wed, 1 Feb 2023 at 12:44, Marco Giusti <[email protected]> wrote:
> for line in open(filename):
> if line.strip() and not line.startswith("#"):
> clean.append(line)
>
> print(clean)
> Se questa fosse una risposta in StackOverflow, sono sicuro che qualcuno
> riprenderebbe la soluzione per trasformarla in una linea sola.
Dato che devi chiude il file object difficile restare su una sola istruzione.
Sicuramente la logica "inizializza lista vuota e mettici la roba in
maniera condizionale" la puoi riassumere con una list comprehension,
considerato che la condizione in sé è semplice:
with open(filename) as file:
clean = [line.strip() for line in file if line.strip() and not
line.startswith("#")]
Per mia esperienza se la condizione diventa più articolata meglio un
bel blocco for esplicito con gli if:, la list comprehension diventa
rapidamente illeggibile.
Oppure in maniera "più funzionale"
with open(filename) as file:
clean = filter(lambda x: x and not x.startswith("#"),
map(lambda x: x.strip(), open(filename)))
La seconda ti dà un generatore, te lo espandi con list() se ti serve
ma in genere meglio ritardare il loro consumo a quando ti serve
effettivamente.
--
A.
_______________________________________________
Python mailing list
[email protected]
https://lists.python.it/mailman/listinfo/python