Die Funktion join()
akzeptiert einen iterierbaren Parameter. Allerdings habe ich mich gefragt, warum mit:Python: Iteratoren und `join()` besser verstehen
text = 'asdfqwer'
dieses:
''.join([c for c in text])
ist deutlich schneller als:
''.join(c for c in text)
Das gleiche geschieht mit langen Strings (d text * 10000000
).
Wenn ich den Speicherabdruck beider Ausführungen mit langen Strings beobachte, denke ich, dass beide eine und nur eine Liste von Zeichen im Speicher erstellen und sie dann zu einer Zeichenfolge verbinden. Ich vermute also, der Unterschied liegt nur zwischen join()
erstellt diese Liste aus dem Generator und wie der Python-Interpreter das gleiche tut, wenn es [c for c in text]
sieht. Aber auch hier rate ich nur, also möchte ich, dass jemand meine Vermutungen bestätigt/leugnet.
@AvinashRaj: Wo sehen Sie ein Tupel hier? – Matthias
@Matthias ya, fälschlicherweise als Tupel statt Generator erwähnt. –
Vermutlich beziehen Sie sich auf: http://Stackoverflow.com/a/9061024/3001761 – jonrsharpe