.join() yöntemi tam olarak ne yapar?

Python'da oldukça yeniyim ve dizeleri birleştirmek için tercih edilen yöntem olduğunu okuduğum .join() ile tamamen kafam karıştı.

Denedim:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring().join(strid)

ve şöyle bir şey var:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5

Neden bu şekilde çalışıyor? 595`in otomatik olarak eklenmesi gerekmez mi?

Çözüm

Çıktılarınıza dikkatlice bakın:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

Orijinal dizenizin "5", "9", "5" kısımlarını vurguladım. Python join() yöntemi bir string yöntemidir ve string ile birleştirilecek şeylerin bir listesini alır. Daha basit bir örnek açıklamaya yardımcı olabilir:

>>> ",".join(["a", "b", "c"])
'a,b,c'

Verilen listenin her bir öğesi arasına "," eklenir. Sizin durumunuzda, "list", ["5", "9", "5"] listesi olarak ele alınan "595" dize gösterimidir.

Görünüşe göre bunun yerine + arıyorsunuz:

print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
Yorumlar (4)

join` argüman olarak yinelenebilir bir şey alır. Genellikle bu bir listedir. Sizin durumunuzdaki sorun, bir dizenin kendisinin yinelenebilir olması ve her karakteri sırayla vermesidir. Kodunuz şu şekildedir:

"wlfgALGbXOahekxSs".join("595")

bununla aynı şekilde hareket eder:

"wlfgALGbXOahekxSs".join(["5", "9", "5"])

ve böylece dizenizi üretir:

"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"

Yinelenebilir karakter dizileri Python ile ilgili en kafa karıştırıcı başlangıç konularından biridir.

Yorumlar (1)

join() tüm liste öğelerini birleştirmek içindir. Sadece iki dizgiyi birleştirmek için "+" daha mantıklı olacaktır:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring() + strid
Yorumlar (0)