Hva gjør egentlig .join()-metoden?
Jeg er ganske ny i Python og er helt forvirret av .join()
som jeg har lest er den foretrukne metoden for å sammenkoble strenger.
Jeg har prøvd:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
og fikk noe sånt som:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
Hvorfor fungerer det slik? Burde ikke 595
bare legges til automatisk?
205
3
Se nøye på resultatene dine:
Jeg har uthevet "5", "9", "5" av den opprinnelige strengen din. Python-metoden
join()
er en strengmetode, og tar en liste med ting som skal sammenføyes med strengen. Et enklere eksempel kan bidra til å forklare:"," settes inn mellom hvert element i den gitte listen. I ditt tilfelle er "listen" strengrepresentasjonen "595", som behandles som listen ["5", "9", "5"].
Det ser ut til at du leter etter
+
i stedet:join
tar en itererbar ting som et argument. Vanligvis er det en liste. Problemet i ditt tilfelle er at en streng i seg selv er itererbar, og gir ut hvert tegn etter tur. Koden din brytes ned til dette:som fungerer på samme måte som dette:
og produserer dermed strengen din:
Strenger som iterables er en av de mest forvirrende begynnelsesproblemene med Python.
join() er for sammenkjeding av alle listeelementer. For sammenkjeding av bare to strenger "+" ville være mer fornuftig: