On Wed, 1 Feb 2023 at 12:44, Marco Giusti <marco.giu...@posteo.de> 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 Python@lists.python.it https://lists.python.it/mailman/listinfo/python