Python String adalah kumpulan dari karakter Unicode. Python memiliki banyak fungsi untuk manipulasi string, tetapi pustaka string Python tidak mendukung fungsi "terbalik ()" bawaan. Tetapi ada berbagai cara untuk membalikkan string. Kami mendefinisikan metode berikut untuk membalikkan String Python
- Menggunakan untuk loop
- Menggunakan pengulangan while
- Menggunakan operator irisan
- Menggunakan fungsi terbalik()
- Menggunakan rekursi
Menggunakan untuk loop
Di sini, kita akan membalikkan string yang diberikan menggunakan for loop
Keluaran
('The original string is: ', 'JavaTpoint') ('The reverse string is', 'tniopTavaJ')
Penjelasan-
Pada kode di atas, kita telah mendeklarasikan fungsi reverse_string() dan melewatkan argumen str. Di badan fungsi, kami telah mendeklarasikan variabel string kosong str1 yang akan menampung string terbalik
Selanjutnya, perulangan for mengulangi setiap elemen dari string yang diberikan, menggabungkan setiap karakter di awal dan menyimpannya dalam variabel str1
Setelah iterasi lengkap, ia mengembalikan string urutan terbalik str1 ke fungsi pemanggil. Itu mencetak hasilnya ke layar
Menggunakan pengulangan while
Kita juga dapat membalikkan string menggunakan perulangan while. Mari kita pahami contoh berikut
Contoh -
Keluaran
('The original string is : ', 'JavaTpoint') ('The reversed string using a while loop is : ', 'tniopTavaJ') _
Penjelasan
Pada kode di atas, kita telah mendeklarasikan sebuah variabel str yang menyimpan nilai string. Kami menginisialisasi while loop dengan nilai string
Di setiap iterasi, nilai str[count - 1] digabungkan ke reverse_String dan mengurangi nilai count. Beberapa saat menyelesaikan iterasinya dan mengembalikan string urutan terbalik
Menggunakan operator irisan ([]).
Kami juga dapat membalikkan string yang diberikan menggunakan operator slice yang diperluas. Mari kita pahami contoh berikut
Contoh -
Keluaran
('The original string is : ', 'JavaTpoint') ('The reversed string(using extended slice syntax) is : ', 'tniopTavaJ')
Penjelasan
Umumnya, operator irisan menerima tiga parameter - mulai, berhenti, dan melangkah. Kami memberikan nilai no untuk indeks awal dan akhir, yang menunjukkan indeks awal adalah 0 dan akhir adalah n-1 secara default. Ukuran langkah adalah -1;
Menggunakan fungsi terbalik dengan bergabung
Python menyediakan fungsi reversed() untuk membalikkan string. Mari kita pahami contoh berikut
Contoh -
Keluaran
('The original string is : ', 'JavaTpoint') ('The reversed string using reversed() is : ', 'tniopTavaJ')
Penjelasan
Di badan fungsi, kami mendeklarasikan string kosong yang dipisahkan oleh. operator titik. String terbalik() mengembalikan string terbalik yang digabungkan dengan string kosong yang dipisahkan menggunakan fungsi join()
Menggunakan rekursi()
String juga dapat dibalik menggunakan rekursi. Rekursi adalah proses dimana fungsi memanggil dirinya sendiri. Perhatikan contoh berikut
Contoh -
Keluaran
('The original string is : ', 'JavaTpoint') ('The reversed string(using reversed) is : ', 'tniopTavaJ') _
Penjelasan
Pada kode di atas, kita telah mendefinisikan sebuah fungsi yang menerima string sebagai argumen
Di badan fungsi, kami mendefinisikan kondisi dasar rekursi, jika panjang string adalah 0, maka string dikembalikan, dan jika tidak maka kami memanggil fungsi secara rekursif
Operator irisan mengiris string mengharapkan karakter pertama dan digabungkan ke akhir string irisan
Aktivitas terbaru pada pertanyaan ini membuat saya melihat ke belakang dan mengubah solusi saya menjadi one-liner cepat menggunakan generator
rev = ''.join([text[len(text) - count] for count in xrange(1,len(text)+1)])Meskipun jelas ada beberapa jawaban yang lebih baik di sini seperti langkah negatif dalam fungsi range atau xrange. Berikut ini adalah solusi asli saya
Ini solusi saya, saya akan menjelaskannya langkah demi langkah
def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') _Pertama, kita harus memberikan parameter ke fungsi, dalam hal ini def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 2
Selanjutnya, saya menetapkan daftar kosong, bernama def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 3 untuk digunakan nanti. (Saya sebenarnya tidak tahu saya memerlukan daftar sampai saya mendapatkan def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 4 loop, Anda akan melihat mengapa itu perlu dalam sedetik. )
Variabel def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 5 akan masuk akal setelah saya masuk ke loop def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 4
Jadi mari kita lihat versi dasar dari apa yang ingin kita capai
Masuk akal jika menambahkan karakter terakhir ke daftar akan memulai urutan terbalik. Sebagai contoh
>>lst = [] >>word = 'foo' >>lst.append(word[2]) >>print lst ['o']Namun untuk terus membalikkan urutan, kita perlu menambahkan def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 7 lalu def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 8
>>lst.append(word[2]) >>lst.append(word[1]) >>lst.append(word[0]) >>print lst ['o','o','f']Ini bagus, kami sekarang memiliki daftar yang memiliki kata asli kami dalam urutan terbalik dan dapat diubah kembali menjadi string dengan menggunakan def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 9. Tapi ada masalah. Ini berfungsi untuk kata foo, bahkan berfungsi untuk kata apa pun yang memiliki panjang 3 karakter. Tapi bagaimana dengan kata dengan 5 karakter? . Bagaimana jika ada cara kami dapat mengubah indeks yang kami tambahkan secara dinamis sehingga kata apa pun akan dikembalikan dalam urutan terbalik?
Masukkan untuk loop
for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1Pertama-tama, perlu menggunakan >>lst = [] >>word = 'foo' >>lst.append(word[2]) >>print lst ['o'] _0 daripada hanya >>lst = [] >>word = 'foo' >>lst.append(word[2]) >>print lst ['o'] 1, karena kita perlu mengulangi karakter dalam kata, tetapi kita juga perlu menarik nilai indeks kata sehingga kita mengubah urutannya
Bagian pertama dari body loop for kita seharusnya terlihat familier. Ini sangat mirip dengan
>>lst.append(word[..index..])Padahal, konsep dasarnya sama persis
>>lst.append(text[..index..])Jadi apa yang dilakukan semua hal di tengah?
Nah, pertama-tama kita perlu menambahkan indeks huruf terakhir ke daftar kita, yang merupakan panjang kata, def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 2, -1. Mulai sekarang kita akan menyebutnya sebagai l(t) -1
>>lst.append(text[len(text)-1])Itu saja akan selalu mendapatkan huruf terakhir dari kata kita, dan menambahkannya ke def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 3, terlepas dari panjang kata. Tapi sekarang kita memiliki huruf terakhir, yaitu l(t) - 1, kita membutuhkan huruf kedua terakhir, yaitu l(t) - 2, dan seterusnya, sampai tidak ada lagi karakter untuk ditambahkan ke daftar. Ingat variabel def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') _5 kita dari atas? . Dengan menggunakan perulangan def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') _4, kita dapat menambah nilai def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') 5 sebanyak 1 melalui setiap iterasi, sehingga nilai yang kita kurangi bertambah, hingga perulangan for telah berulang di seluruh kata
>>for i in range(0,len(text)): . . lst.append(text[len(text)-count]) . count += 1Sekarang setelah kita memiliki inti dari fungsi kita, mari kita lihat apa yang kita miliki sejauh ini
def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1Kita hampir selesai. Saat ini, jika kita memanggil fungsi kita dengan kata 'halo', kita akan mendapatkan daftar seperti itu
['o','l','l','e','h']
Kami tidak ingin daftar, kami ingin string. Kita dapat menggunakan >>lst = [] >>word = 'foo' >>lst.append(word[2]) >>print lst ['o'] _7 untuk itu
def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') _0Dan itu saja. Jika kita memanggil kata 'hello' secara terbalik(), kita akan mendapatkan ini
def reverse(text): lst = [] count = 1 for i in range(0,len(text)): lst.append(text[len(text)-count]) count += 1 lst = ''.join(lst) return lst print reverse('hello') _1Jelas, ini jauh lebih banyak kode daripada yang diperlukan dalam situasi kehidupan nyata. Menggunakan fungsi terbalik atau irisan yang diperluas akan menjadi cara optimal untuk menyelesaikan tugas ini, tetapi mungkin ada beberapa contoh ketika itu tidak berfungsi, dan Anda memerlukan ini. Either way, saya pikir saya akan membagikannya untuk siapa saja yang akan tertarik