Ad esempio, i file, in Python, sono iterabili - iterano sulle linee nel file. Voglio contare il numero di linee.Esiste un modo integrato per ottenere la lunghezza di un iterabile in python?
Un modo rapido è quello di fare questo:
lines = len(list(open(fname)))
Tuttavia, questo carica l'intero file in memoria (in una sola volta). Questo piuttosto vanifica lo scopo di un iteratore (che ha solo bisogno di mantenere la riga corrente in memoria).
Questo non funziona:
lines = len(line for line in open(fname))
come generatori non hanno una lunghezza.
C'è un modo per fare questo breve di definire una funzione di conteggio?
def count(i):
c = 0
for el in i: c += 1
return c
MODIFICA: per chiarire, ho capito che l'intero file dovrà essere letto! Io non lo voglio in memoria tutto in una volta =).
per contare il numero di righe in cui caricare il file in memoria comunque! Gli elenchi – hasen
(tutti i tipi di sequenza) sono anch'essi iterabili.cosa intendi è "iteratore" – hop
@hasen: sì, ma non tutto in una volta. – Claudiu