Saya sudah mencoba melihat-lihat jawaban di web untuk memisahkan string menjadi array karakter, tetapi sepertinya saya tidak dapat menemukan metode sederhana
str.split(//)
sepertinya tidak berfungsi seperti Ruby. Apakah ada cara sederhana untuk melakukan ini tanpa mengulang?
Jawaban:
Anda perlu daftar
sumber
cast_method = lambda x: [x]
Anda mengambil string dan meneruskannya ke daftar ()
sumber
Anda juga dapat melakukannya dengan cara yang sangat sederhana tanpa daftar ():
sumber
for
, tidak banyak yang bisa dijelaskan. Saya pikir Anda harus membaca tutorial python tentang struktur data , terutama pemahaman daftar.list(map(lambda c: c, iter("foobar")))
, tetapi lebih mudah dibaca dan bermakna.Jika Anda ingin memproses karakter String satu per satu. Anda memiliki berbagai opsi.
Keluaran:
Keluaran:
Keluaran:
Keluaran:
sumber
Saya mengeksplorasi dua cara lain untuk menyelesaikan tugas ini. Mungkin bermanfaat bagi seseorang.
Yang pertama mudah:
Dan yang kedua menggunakan
map
danlambda
berfungsi. Mungkin cocok untuk tugas yang lebih kompleks:Sebagai contoh
Lihat python docs untuk metode lainnya
sumber
Tugas bermuara pada iterasi karakter string dan mengumpulkannya ke dalam daftar. Solusi yang paling naif akan terlihat seperti
Tentu saja, bisa disingkat menjadi adil
tetapi masih ada solusi yang lebih pendek yang melakukan hal yang sama.
list
konstruktor dapat digunakan untuk mengonversi setiap iterable (iterator, daftar, tuple, string dll) ke daftar.Nilai tambah besarnya adalah ia berfungsi sama di Python 2 dan Python 3.
Juga, mulai dari Python 3.5 (terima kasih kepada PEP 448 yang mengagumkan ) sekarang mungkin untuk membuat daftar dari setiap iterable dengan mengekstraknya ke daftar kosong literal:
Ini lebih rapi, dan dalam beberapa kasus lebih efisien daripada memanggil
list
konstruktor secara langsung.Saya akan menyarankan agar menggunakan
map
pendekatan berbasis, karenamap
tidak tidak kembali daftar di Python 3. Lihat Cara penggunaan peta filter, dan mengurangi Python 3 .sumber
Saya hanya perlu array karakter:
Jika Anda ingin membagi str dengan str tertentu:
sumber
split()
fungsi inbuilt hanya akan memisahkan nilai berdasarkan kondisi tertentu tetapi dalam satu kata, itu tidak dapat memenuhi kondisi tersebut. Jadi, itu bisa diselesaikan dengan bantuanlist()
. Secara internal memanggil Array dan itu akan menyimpan nilai berdasarkan array.Seharusnya,
sumber
Buka kemasannya:
sumber
Jika Anda ingin membaca hanya akses ke string, Anda dapat menggunakan notasi array secara langsung.
Dapat bermanfaat untuk pengujian tanpa menggunakan regexp. Apakah string berisi baris akhir yang berakhir?
sumber
Yah, seperti saya suka versi daftar, ada cara lain yang lebih bertele-tele yang saya temukan (tapi keren jadi saya pikir saya akan menambahkannya ke medan):
sumber
camelcase = ''.join([text[i].upper() if i % 2 else text[i].lower() for i in range(len(text))])
mirip dengan
list(string)
tetapi mengembalikan generator yang malas dievaluasi pada titik penggunaan, sehingga hemat memori.sumber
di mana a adalah string yang ingin Anda pisahkan. Nilai "a [i]" adalah karakter individual dari string yang dapat ditambahkan ke daftar.
sumber
for c in a: print c
jauh lebih langsung