Ini adalah usaha saya menggunakan dekorator dan for loop. Taruh semuanya dalam satu file
Detail implementasi
def reverse(func): def reverse_engine(items): partial_items = [] for item in items: partial_items = [item] + partial_items return func(partial_items) return reverse_enginePenggunaan
Contoh 1
@reverse def echo_alphabets(word): return ''.join(word) echo_alphabets('hello') # olleh _Contoh 2
@reverse def echo_words(words): return words echo_words([':)', '3.6.0', 'Python', 'Hello']) # ['Hello', 'Python', '3.6.0', ':)']Contoh 3
@reverse def reverse_and_square(numbers): return list( map(lambda number: number ** 2, numbers) ) reverse_and_square(range(1, 6)) # [25, 16, 9, 4, 1]Program ini menggunakan perulangan while sama seperti di atas. Namun, kami baru saja mengganti For Loop dengan While Loop. Di sini, fungsi len digunakan untuk mencari panjang dari total karakter dalam sebuah kalimat
Ada sejumlah besar fungsi bawaan yang ada di juru bahasa python yang tersedia dengan mudah untuk menyelesaikan masalah apa pun dengan solusi paling optimal. Namun, ketika kita melihat fungsi perpustakaan string di python untuk manipulasi string, tidak ada fungsi "reverse ()" maka metode lain yang tercantum dan dijelaskan di bawah ini akan sangat membantu untuk memecahkan masalah tersebut.
Apa itu string?
String menurut definisi adalah tipe data yang tidak dapat diubah yang tidak dapat diubah setelah dideklarasikan dalam suatu program. Kumpulan karakter apa pun yang dilampirkan dalam tanda kutip tunggal atau ganda menunjukkan sebuah string
Pengindeksan dalam string dengan python
Kami menggunakan indeks untuk memudahkan akses karakter/nilai apa pun dalam string. Indeks adalah lokasi untuk karakter tertentu dalam sebuah string
Berikut adalah contoh pengindeksan string
Untuk mengakses karakter apa pun dari string, kita dapat menggunakan salah satu dari dua nilai yang dipetakan padanya, tercantum dalam tabel di atas. Diberikan di bawah ini, adalah contoh untuk hal yang sama
print(name[2]) print(name[-7])
Keluaran
Bagaimana cara membalikkan string?
Pada artikel ini kita akan membahas membalikkan string menggunakan metode berikut
- Menggunakan for loop
- Menggunakan perulangan while
- Menggunakan sintaks irisan yang diperluas
- Menggunakan fungsi join
- Menggunakan fungsi terbalik()
- Menggunakan rekursi
- Menggunakan tumpukan
Menggunakan Untuk Loop
Dalam metode ini, kami memanggil fungsi yang membalikkan string dengan membuat variabel baru (string kosong) yang akan menyimpan string terbalik kami setelah kami mengulangi string input kami dengan menambahkan setiap karakter ke awal string
Metode ini umumnya lambat karena perulangan, serta salinan yang kita buat setiap kali kita menambahkan karakter ke string
Kode
def reverse(s: str): reversed = "" for ch in s: reversed = ch + reversed return reversed s = "abcd" print(reverse(s))
Keluaran
Begini cara kerja kodenya
Awalnya, "terbalik" adalah string kosong. Kami kemudian melanjutkan dengan for loop yang berjalan untuk setiap karakter (ch) di string kami (s)
Pada string s, perulangan for dimulai dengan karakter 'a'. Pernyataan kami
terbalik = ch + terbalik
membuat string terbalik saat ini = a. Dalam iterasi berikutnya dari for loop, karakternya adalah 'b', dan sesuai pernyataan, menjadi
b + string terbalik saat ini yang hanya 'a', sehingga membuat string terbalik = ba
Ini berlanjut hingga karakter terakhir, membalikkan string
Klik di sini, untuk mengetahui lebih banyak tentang for loop di python
Menggunakan While Loop
Untuk membalikkan string menggunakan while loop di python, kami memerlukan pointer yang menunjuk ke karakter terakhir dalam string. Fungsi len() bawaan, yang mengembalikan panjang string, dapat digunakan untuk menyetel nilai awal penunjuk
Saat kami terus mengurangi nilai pointer, itu menunjuk ke karakter yang diperlukan dalam membalikkan string. Kompleksitas waktu dari pendekatan ini adalah O(n)
Kode
def reverse(s): reversed = "" count = len(s) while count > 0: reversed += s[count - 1] count = count - 1 return reversed s = "interview" print(reverse(s)) _
Keluaran
Menggunakan Sintaks Extended Slice
Cara sederhana untuk memahami sintaks extended slice adalah slice[start. berhenti]. Irisan dimulai di lokasi yang ditentukan oleh awal, berhenti sebelum lokasi berhenti tercapai, dan bergerak mulai dengan satu posisi lalu ke item langkah berikutnya.
[-1. 0. -1] berarti kita mulai dari indeks terakhir len(string)-1 naik ke 0 yang tidak termasuk, mengambil langkah -1 yang artinya, mundur
Katakanlah kita mengiris string seperti – string[. 2]. Ini pada dasarnya mewakili string[0. -1. 2], yang berarti bergerak dari awal, hingga akhir, dengan langkah 2
Oleh karena itu penggunaan string[. -1] akan membalikkan string, karena kita akan bergerak dalam langkah negatif
Sintaks irisan yang diperluas berada di bawah pemahaman daftar dan merupakan metode tercepat untuk membalikkan string
Kode
def reverse(s): return s[::-1] s = "interview" print(reverse(s))
Keluaran
Menggunakan fungsi join() dan reversed()
Python menyediakan fungsi yang disebut "terbalik ()" untuk daftar, yang mengembalikan objek iterator terbalik khusus. Objek iterator pada dasarnya adalah sesuatu yang perlu diulang (atau diulang) untuk menghasilkan elemennya
Jika kita tidak memberikannya kepada. bergabung itu hanya akan mencetak repr dari objek terbalik
Repr adalah representasi string dari objek yang dapat dievaluasi, pada dasarnya adalah sesuatu yang dapat digunakan untuk membuat ulang objek
misalnya
>>> from decimal import Decimal >>> a = Decimal(1.25) >>> print(a) 1.25 <---- this is from __str__ >>> a Decimal('1.25') <---- this is from __repr__ _
Kami memberikan "". bergabung dengan iterable sebagai argumen, yang di sini adalah objek terbalik dan bergabung dengan elemen untuk menghasilkan string
Ada cara lain untuk mengkonsumsinya tanpa bergabung yang menghasilkan objek yang berbeda. Misalnya, daftar mengambil objek terbalik dan membuat daftar dari elemen yang dihasilkannya
a = reversed('pqrs') print(list(a)) _
Keluaran
Jika pada akhirnya Anda membutuhkan string, maka opsi terbaik adalah menggunakan. Ikuti
Kode
def reverse(s): reversed_str = "".join(reversed(s)) return reversed_str
Lihat artikel ini untuk mengetahui lebih banyak tentang Join() dengan Python
Menggunakan rekursi
Kita dapat membalikkan string menggunakan rekursi dengan menemukan apa yang kita sebut – kasus dasar dan kasus rekursif. Pengamatan kecil yang dapat kita lakukan di sini adalah jika panjang string sama dengan 0, string dapat dikembalikan, yang akan menjadi kasus dasar.
Kasus rekursif adalah ketika panjang string tidak sama dengan 0. Dalam hal ini, kita memanggil fungsi balik secara rekursif dan mengiris string sedemikian rupa sehingga kita hanya menyisakan karakter pertama, kemudian menggabungkannya ke akhir string yang diiris
Kode
def reverse(s): if len(s) == 0: # base case return s else: # adding the first character at the end after slicing return reverse(s[1:]) + s[0] s = "interview" print(reverse(s))
Keluaran
Menggunakan tumpukan
Stack adalah tipe struktur data "Last In First Out (LIFO)". Ini berarti bahwa karakter terakhir yang akan dimasukkan ke dalam tumpukan akan menjadi yang pertama dicetak. Ini membantu dalam membalikkan string. Satu per satu setiap karakter akan didorong ke dalam tumpukan dan kemudian dikeluarkan, mengembalikan string terbalik