Cara menggunakan reverse iterator python

Python memiliki banyak fungsi string yang berguna, seperti casefold() yang mengubah string menjadi huruf kecil. Tidak ada fungsi pembalikan string yang dibangun ke dalam bahasa. Namun, ada dua pendekatan sederhana yang dapat Anda gunakan untuk membalikkan string dengan Python.

Metode spesifik yang Anda pilih akan tergantung pada preferensi pribadi Anda. Artikel ini memperkenalkan dua pendekatan yang dapat Anda gunakan untuk membalikkan string dengan Python.

Slicing the String

Tujuan dari operator irisan adalah untuk mengekstrak bagian tertentu dari sebuah string. Ini menggunakan kombinasi tiga nilai: mulai, berhenti, dan langkah. Sintaksnya adalah: “string[start:stop:step]”

Namun, slice juga merupakan metode pembalikan string yang populer di Python. Untuk membalikkan string dengan metode ini, Anda harus memberikan nilai -1 untuk bagian langkah. Ini akan mengembalikan setiap karakter dalam string dalam urutan terbalik. Jika Anda menghilangkan bagian awal dan akhir, nilai yang dikembalikan akan menjadi seluruh string, secara default.

Menggunakan Operator Slice untuk Membalikkan String

state = “California”

print(state[::-1])”

Menjalankan kode di atas akan menghasilkan output berikut di konsol: ainrofilaC

Membalikkan String dan Menggabungkannya Kembali

Cara yang lebih mudah dibaca untuk membalikkan string dalam Python adalah dengan menggunakan fungsi join() dan reversed() bersama-sama. Fungsi reversed() menghasilkan objek iterator terbalik dari urutan yang diberikan. Urutan dapat berupa nilai primitif, seperti string, atau struktur data seperti daftar atau larik.

Menggunakan Fungsi Terbalik

state = “California”

reversedState = reversed(state)

for i in reversedState:

    print(i)

Menjalankan kode di atas akan menghasilkan output berikut di konsol: a,I,n,r,o,f,I,l,a,C

Seperti yang Anda lihat, fungsi reversed() membalikkan string. Namun, setiap karakter dalam string sekarang menjadi item independen yang dicetak di konsol melalui loop for Python. Di sinilah fungsi join() menjadi berguna. Fungsi join() menggabungkan semua karakter yang dikembalikan oleh fungsi reversed() dan mengembalikan string terbalik.

Menggunakan Fungsi Gabung

state = “California”

reversedState = “” .join(reversed(state))

print(reversedState)

Menjalankan kode di atas akan menghasilkan output berikut di konsol: ainrofilaC

Mengapa Memilih Satu Metode Dibandingkan Yang Lain?

Pendekatan slicing lebih cepat, terutama karena fungsi join() membuat daftar baru. Namun, menggunakan fungsi join() lebih mudah dibaca, yang merupakan pendekatan yang paling berharga jika program tidak memiliki komentar.

Python membalikkan string dengan salah satu dari dua metode dalam artikel ini, tetapi Anda juga dapat membuat fungsi untuk membalikkan string dengan bantuan fungsi loop.

Iterator utama dalam C++ adalah Input Iterator, Output Iterator, Forward Iterator, Bidirectional Iterator, dan Random Access Iterator. Reverse Iterator sebenarnya bukan iterator; itu adalah adaptor iterator. Ada beberapa varian untuk iterator, seperti iterator konstan.

Iterator adalah pointer yang dielaborasi. Seperti pointer, ia menunjuk ke objek dengan tipe yang sama di memori pada waktu yang berbeda. Semua iterator dapat direferensikan, kecuali untuk iterator keluaran yang hanya dapat direferensikan untuk satu set tipe. Dereferenceable berarti nilai yang ditunjuk oleh pointer atau iterator dapat diperoleh dengan menggunakan operator tipuan, *. Integer dapat ditambahkan ke beberapa iterator dengan cara yang sama, dan untuk tujuan yang sama, integer akan ditambahkan ke pointer.

Pertanyaan untuk artikel ini adalah: Apa iterator ini? Manakah dari iterator berikut yang digunakan dengan vektor C++? Bagaimana iterator ini digunakan dengan vektor C++? Artikel ini menjawab semua pertanyaan ini dengan cara yang disederhanakan. Di akhir artikel ini, ketika semua pertanyaan ini telah dijawab, iterator vektor C++ akan menjadi intuitif dan alami (untuk pembaca).

Isi Artikel

  • Ringkasan C++ Iterator
  • Konstruksi dan Akses Vektor
  • Akses Jangkauan
  • Sisipkan Iterator
  • Pindahkan Iterator
  • Kesimpulan

Ringkasan C++ Iterator

Masukan Iterator

Ide dari input iterator adalah agar program menerima nilai input. Tidak seperti iterator keluaran, iterator masukan selalu dapat direferensikan. Untuk dua iterator input, a dan b, “a == b” tidak menyiratkan “++a == ++b”.

Output Iterator
Ide dari output iterator adalah untuk sebuah program untuk melepaskan nilai output. Tidak seperti iterator input, iterator output tidak selalu dapat direferensikan. Itu hanya dapat direferensikan untuk satu set tipe.

Forward Iterator Forward
iterator dapat memindai vektor dari awal sampai akhir, satu per satu (increment). Ini memiliki semua persyaratan dari iterator input, ditambah persyaratan tambahan. Itu dapat menggantikan input iterator. Untuk dua iterator maju, a dan b, “a == b” menyiratkan “++a == ++b”.

Bidirectional Iterator
Bidirectional Iterator dapat memindai vektor dari awal hingga akhir, satu per satu. Dari akhir ke awal, satu per satu (penurunan). Ini memiliki semua persyaratan iterator maju, ditambah persyaratan tambahan. Itu bisa menggantikan iterator maju. Untuk dua iterator dua arah, a dan b,

“a == b” menyiratkan “++a == ++b”
dan
“–a == –b” menyiratkan “a == b”.

Iterator Akses Acak

Iterator Akses Acak memiliki semua persyaratan dari iterator dua arah, ditambah persyaratan tambahan. Itu dapat menggantikan iterator dua arah. Iterator akses acak hadir dengan keuntungan bahwa jika saat ini menunjuk ke elemen pertama dan elemen keempat diperlukan, itu akan melewati elemen kedua dan ketiga dan menunjuk ke elemen keempat. Kebalikan melompat ke bawah adalah benar.

Terbalik Iterator

Perhatikan bahwa C++ tidak memiliki iterator terbalik normal karena memiliki iterator maju. Jadi, ada adaptor yang disebut Reverse Iterator. Ada lebih banyak kabar baik: iterator terbalik memenuhi semua persyaratan Bidirectional Iterator.

Iterator Konstan

Jika sebuah iterator dikatakan sebagai const iterator, elemen yang ditunjuknya tidak dapat dimodifikasi.

Konstruksi dan Akses Vektor

Container dalam C++ adalah: class array, deque, forward_list, list, vector, map, set, unordered_map, dan unordered_set. Vektor adalah wadah. Templat fungsi tertentu di pustaka standar C++ beroperasi dengan iterator secara langsung atau tidak langsung. Wadah C++, serta vektor, menggunakan fungsi-fungsi ini. Fungsi-fungsi ini dapat dibuat tersedia untuk program C++ dengan salah satu dari arahan penyertaan berikut:

#include 

atau

#include 

Dimasukkannya wadah lain juga akan menyediakan templat fungsi ini. Templat fungsi adalah untuk fungsi yang dapat beroperasi dengan tipe data yang berbeda. Vektor menggunakan iterator melalui templat fungsi ini. Beberapa template fungsi dan hubungannya dengan vektor adalah sebagai berikut:

Konstruksi

Fungsi Templat:

template constexpr auto data(C& c) -> decltype(c.data());

auto berarti tipe pengembalian ditentukan pada evaluasi fungsi. c adalah objek dari kelas C.

Contoh objek vektor yang dibangun dengan ini secara implisit adalah:

vector  vtr;

Di sini objek, c, kosong.

Fungsi Templat:

template constexpr const E* data(initializer_list il) noexcept;

Di sini, E* adalah iterator yang menunjuk ke elemen pertama dari daftar atau wadah. Penggunaannya dengan vektor secara implisit, akan dengan:

vector  vtr{'A', 'B', 'C', 'D', 'E'};
vector::const_iterator it = vtr.begin();

Fungsi template lebih dapat diterapkan pada pernyataan awal () (pernyataan kedua).

Mengakses

Fungsi Templat:

template constexpr auto size(const C& c) -> decltype(c.size());

Ini mengembalikan ukuran wadah. Contoh vektor:

vector  vtr{'A', 'B', 'C', 'D', 'E'};
int N = vtr.size();
cout << N << endl;

Keluarannya adalah 5.

Fungsi Templat:

template [[nodiscard]] constexpr bool empty(initializer_list il) noexcept;

Mengembalikan nilai true jika daftar kosong atau salah jika tidak. Contoh vektor:

vector  vtr{'A', 'B', 'C', 'D', 'E'};
bool bl = vtr.empty();
cout << bl << endl;

Outputnya adalah 0 untuk false.

Akses Jangkauan

Ada fungsi template lain, yang menggunakan iterator yang digunakan vektor untuk masalah jangkauannya. Rentang adalah kumpulan elemen kontainer yang berurutan.

Fungsi Templat:

#include 
0

Ini mengembalikan iterator yang menunjuk ke elemen pertama dalam daftar. auto disini artinya, nilai kembalian ditentukan pada saat evaluasi. Contoh untuk vektor:

#include 
1

Outputnya adalah A. Iterator yang dikembalikan di sini adalah iterator akses acak. Iterator akses acak konstan dapat dikembalikan – lihat nanti.

Templat Fungsi:

#include 
2

Mengembalikan iterator konstan yang menunjuk ke elemen terakhir dari daftar. Kode vektor:

#include 
3

Outputnya adalah “ED”. Sebuah iterator konstan dapat ditambah atau dikurangi, tetapi nilai yang ditunjukkannya tidak dapat diubah. Iterator akses acak normal bisa saja dikembalikan – lihat nanti.

Templat Fungsi:

#include 
4

Mengembalikan nilai terakhir dalam daftar. rbegin() menunjuk ke elemen terakhir dari daftar dan tidak melampaui elemen terakhir dari daftar, seperti yang dilakukan oleh end(). Contoh vektor:

#include 
5

Outputnya adalah: E D. Dengan iterator
terbalik, ++ memiliki efek sebaliknya untuk iterator dua arah.

Templat Fungsi:

#include 
6

Poin tepat sebelum elemen pertama dari daftar. Contoh vektor:

#include 
7

Outputnya adalah A B. Dengan iterator terbalik, — memiliki efek yang berlawanan untuk ++ dari iterator dua arah.

Ada fungsi template lain di bawah judul ini – lihat nanti.

Sisipkan Iterator

reverse_iterator adalah adaptor iterator, bukan iterator. Insert iterator juga merupakan adaptor iterator. Ini memenuhi semua persyaratan iterator keluaran, ditambah persyaratannya sendiri. Itu ada dalam tiga bentuk di C++: back_inserter, front_inserter, dan inserter. Masing-masing memiliki konstruktor sendiri.

back_inserter:

Sisipan di belakang!
Prototipe penting:

#include 
8

Contoh vektor:
Vektor tidak memiliki fungsi anggota sisipan yang disisipkan di belakang. Namun, fungsi anggota push_back(t) dapat dilihat seperti itu.

front_inserter

Sisipan di depan!
Prototipe penting:

#include 
9

Contoh vektor:
Vektor tidak memiliki fungsi anggota sisipan yang disisipkan di depan. Vektor tidak juga memiliki fungsi anggota push_front(t).

Kabar baiknya adalah bahwa vektor memiliki fungsi anggota sisipan yang dapat disisipkan di mana saja, di awal, di dalam, atau di akhir vektor.

penyisip

Iterator ini akan menyisipkan di awal, di dalam, atau di akhir vektor.

Prototipe penting:

template constexpr auto data(C& c) -> decltype(c.data());
0

Contoh vektor:

template constexpr auto data(C& c) -> decltype(c.data());
1

Outputnya adalah:

template constexpr auto data(C& c) -> decltype(c.data());
2

Ekspresi sisipan vektor adalah:

template constexpr auto data(C& c) -> decltype(c.data());
3

Itu menyisipkan elemen tepat sebelum penunjuk (itu) yang ditunjuknya.

Pindahkan Iterator

move_iterator juga merupakan adaptor iterator. Program berikut ini mirip dengan contoh yang ada di spesifikasi C++:

Apa itu iterator dalam python?

Iterator adalah objek yang berisi jumlah nilai yang dapat dihitung. Iterator adalah objek yang dapat diulangi, artinya Anda dapat melintasi semua nilai. Secara teknis, dalam Python, sebuah iterator adalah objek yang mengimplementasikan protokol iterator, yang terdiri dari metode __iter__() dan __next__() .

Apakah kegunaan dari fungsi reverse?

Reverse: Fungsi ini digunakan untuk mengembalikan urutan daftar. Extend: Fungsi ini digunakan untuk memperpanjang daftar dengan menambahkan semua item dalam daftar yang diberikan.