La funzione join()
accetta un parametro iterabile. Tuttavia, mi chiedevo perché avere:Python: comprensione degli iteratori e `join()` migliore
text = 'asdfqwer'
questo:
''.join([c for c in text])
è significativamente più veloce:
''.join(c for c in text)
Lo stesso si verifica con lunghe stringhe (vale a dire text * 10000000
).
Guardando il footprint di memoria di entrambe le esecuzioni con stringhe lunghe, penso che entrambi creino una sola lista di caratteri in memoria, quindi li uniscano in una stringa. Quindi suppongo che la differenza sia solo tra il modo in cui join()
crea questo elenco fuori dal generatore e in che modo l'interprete Python fa la stessa cosa quando vede [c for c in text]
. Ma, di nuovo, sto solo supponendo, quindi vorrei che qualcuno confermasse/negassi le mie ipotesi.
@AvinashRaj: dove vedi una tupla qui? – Matthias
@Matthias ya, erroneamente menzionato come tupla al posto del generatore. –
Probabilmente ti riferisci a: http://stackoverflow.com/a/9061024/3001761 – jonrsharpe