I'm cukup baru untuk Python dan saya benar-benar bingung dengan .join()
yang telah saya baca adalah metode yang disukai untuk menggabungkan string.
Saya mencoba:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
dan ada sesuatu seperti:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
Mengapa tidak bekerja seperti ini? Seharusnya't 595
hanya akan secara otomatis ditambahkan?
Lihatlah hati-hati pada output anda:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^ ^ ^
I've menyoroti "5", "9", "5" asli string. Python join()
method adalah sebuah string method, dan mengambil daftar hal-hal untuk bergabung dengan string. Contoh sederhana mungkin bisa membantu menjelaskan:
>>> ",".join(["a", "b", "c"])
'a,b,c'
"," adalah disisipkan di antara setiap elemen dari daftar yang diberikan. Dalam kasus anda, anda "daftar" adalah representasi string "595", yang diperlakukan sebagai daftar ["5", "9", "5"].
Tampaknya bahwa anda'kembali mencari +
sebagai gantinya:
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
bergabung
mengambil iterable hal sebagai argumen. Biasanya itu's daftar. Masalah dalam kasus anda adalah bahwa string itu sendiri iterable, memberikan karakter masing-masing pada gilirannya. Kode anda istirahat bawah ini:
"wlfgALGbXOahekxSs".join("595")
yang bertindak sama seperti ini:
"wlfgALGbXOahekxSs".join(["5", "9", "5"])
dan sehingga menghasilkan string anda:
"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"
String sebagai iterables adalah salah satu yang paling membingungkan awal masalah dengan Python.
Untuk menambahkan string, hanya menggabungkan dengan tanda+
.
E. g.
>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world
bergabung
menghubungkan string bersama-sama dengan separator. Separator adalah apa yang anda
tempat tepat sebelum bergabung
. E. g.
>>> "-".join([a,b])
'Hello, -world'
Bergabung mengambil daftar string sebagai parameter.
join() adalah untuk menggabungkan semua elemen list. Untuk menggabungkan dua string "+" akan membuat lebih masuk akal:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
Untuk memperluas sedikit lebih pada apa yang orang lain katakan, jika anda ingin menggunakan untuk bergabung hanya menggabungkan dua string, anda akan melakukan hal ini:
strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring(), strid])
Ada penjelasan yang baik mengapa lebih mahal untuk menggunakan +
untuk menggabungkan sejumlah besar dari string di sini
Plus operator baik-baik saja solusi untuk menggabungkan dua Python strings. Tapi jika anda terus menambahkan lebih dari dua string (n > 25) , anda mungkin ingin untuk berpikir sesuatu yang lain.
''.bergabung([a, b, c])
trik optimalisasi kinerja.
list = ["my", "name", "is", "kourosh"]
" ".join(list)
Jika ini adalah sebuah masukan, menggunakan metode JOIN, kita dapat menambahkan jarak antara kata-kata dan juga mengkonversi daftar ke string.
Ini adalah Python output
'my name is kourosh'
"".bergabung dapat digunakan untuk menyalin string di daftar untuk variabel
>>> myList = list("Hello World")
>>> myString = "".join(myList)
>>> print(myList)
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> print(myString)
Hello World