Python

Iterator dengan Python

Iterator dengan Python
Iterator adalah alat yang berharga untuk Python. Ini adalah objek yang digunakan untuk mengulangi semua elemen koleksi. Iterator memberikan akses ke elemen wadah, tetapi tidak melakukan iterasi sendiri. Ini berfungsi seperti kursor basis data dan digunakan untuk membaca daftar catatan satu per satu. Misalnya, 'untuk' loop yang mengulangi nilai-nilai wadah berfungsi sebagai iterator. Python memiliki banyak iterator bawaan untuk objek yang dapat diubah, seperti daftar, tupel, kamus, dll. Tanpa iterator ini, 'itertools' fungsi dapat digunakan untuk mengembalikan iterator lain dengan Python. Artikel ini menunjukkan cara menggunakan loop sebagai iterator, custom iterator, infinite iterator, dan mengontrol infinite iterator di Python 3. Beberapa kegunaan 'itertools' fungsi juga dijelaskan di bagian terakhir dari tutorial ini.

Metode Iterator

Setiap objek iterator berisi dua metode berikut:.

Metode ini digunakan untuk menginisialisasi objek yang dapat diubah. Objek yang dikembalikan memiliki metode '_ _lanjut_ _()' dengan Python 3.

Metode ini mengembalikan nilai berikutnya dari objek yang dapat diubah. Hubungan antara iterator dan objek iterable ditunjukkan pada diagram berikut:.

Iterasi dengan Loop

Disebutkan sebelumnya bahwa 'untuk'loop memanggil'lanjut()' metode secara implisit saat mengulangi objek apa pun yang dapat diubah. Ketika sebuah loop digunakan untuk mengulangi objek yang dapat diubah, 'untuk'loop memanggil'lanjut()' metode secara implisit dan 'sementara'loop memanggil'lanjut()' atau '__lanjut__()' metode secara eksplisit untuk membaca nilai berikutnya dari objek yang dapat diubah. Kedua jenis loop terus memanggil metode ini hingga 'Berhenti Iterasi' sinyal dihasilkan.

Contoh 1: Iterasi Objek Iterable dengan 'untuk' Loop

Skrip berikut menunjukkan penggunaan 'untuk' loop untuk mengulangi lima objek iterable yang berbeda. Pertama 'untuk' loop digunakan untuk mengulangi nilai string dan mencetak setiap karakter string di setiap iterasi. Kedua 'untuk' loop digunakan untuk mengulangi konten file teks yang ada dan mencetak setiap baris file di setiap iterasi. Ketiga 'untuk' loop digunakan untuk mengulang nilai dari sebuah tuple. Yang keempat 'untuk' loop digunakan untuk mengulangi nilai yang terkandung dalam daftar. Kelima 'untuk' loop digunakan untuk mengulang nilai yang terkandung dalam kamus.

# Iterasi sebuah String menggunakan for loop
print("Iterasi String menggunakan for loop")
str = "Python"
untuk val di str :
cetak (val)
# Iterasi file yang ada menggunakan for loop
print("\n\nMembaca file baris demi baris menggunakan for loop")
untuk baris terbuka("test.txt"):
cetak(baris, akhir="")
# # Iterasi tuple menggunakan for loop
print("\n\nTuple Iterasi menggunakan for loop")
tup = ("Buku", "Kertas", "Pensil", "Pena")
untuk val di tup:
cetak (val)
# Iterasi daftar menggunakan for loop
print("\n\nDaftar Iterasi menggunakan for loop")
listdata = ["Desainer", "Analis", "Programmer", "Administrator"]
untuk val dalam listdata:
cetak (val)
# Iterasi kamus menggunakan for loop
print("\n\nIterasi Kamus menggunakan for loop")
dictval = 'Meher': 95, 'Sakib': 97, 'Akhi': 70, 'Fiaz': 78
untuk indeks di dictval :
print("%s mencapai %d tanda" %(indeks, dictval[indeks]))

Keluaran

Output berikut menunjukkan bahwa karakter dari nilai string; garis-garis itu uji.txt mengajukan; dan item tupel, daftar, dan kamus dicetak setelah menjalankan skrip.

Contoh 2: Daftar Iterasi dengan Loop 'sementara'

Script berikut menunjukkan penggunaan 'sementara' loop untuk mengulang daftar data. Di sini, 'iter()metode ' digunakan untuk menginisialisasi objek yang dapat diubah, dan 'lanjut()' metode digunakan untuk membaca nilai berikutnya dari objek yang dapat diubah. Berhenti Iterasi sinyal digunakan untuk mengakhiri dari infinite 'sementara' loop ketika tidak ada item dari daftar yang tersisa untuk dibaca.

# Tentukan daftar
listdata = ['google.com', 'bing.com','yahoo.com', 'baidu.com', 'duckduckgo.com']
# Inisialisasi objek yang dapat diubah
init_iter_object = iter(daftardata)
print("Data Daftar Iterasi menggunakan while loop:\n")
# Deklarasikan dan perulangan while tak terbatas
sementara Benar:
mencoba:
# metode berikutnya () digunakan untuk mengulangi nilai berikutnya
nilai = berikutnya(init_iter_object)
cetak (nilai)
kecuali StopIteration:
# Hentikan dari loop setelah mengulangi semua nilai
istirahat

Keluaran

Output berikut menunjukkan bahwa setiap nilai daftar telah dicetak di setiap baris dengan menggunakan 'lanjut()' metode setelah menjalankan skrip.

Contoh 3: Iterasi Tuple dengan Metode '__next__()' dan 'sementara' Loop

Dalam skrip berikut, keduanya 'lanjut()' dan '__lanjut__()' metode yang digunakan untuk iterasi nilai-nilai dari sebuah tuple. 'iter()' metode digunakan untuk membuat objek yang dapat diubah, bernama 'init_iter.' Di sini, 'lanjut()' metode dipanggil dua kali untuk mencetak dua nilai pertama dari tuple. Selanjutnya, tak terbatas 'sementara' loop digunakan untuk mengulangi nilai yang tersisa dari tupel dan 'Berhenti Iterasi' sinyal digunakan untuk mengakhiri dari loop, seperti pada contoh sebelumnya.

# tentukan tupel
animal_tuple =('Burung','Singa', 'Monyet', 'Ular', 'Gajah')
print("Nilai Tuple adalah:\n")
# Inisialisasi objek iterator menggunakan iter()
init_iter = iter(tupel_hewan)
# iterasi dan cetak nilai menggunakan metode next()()
cetak(berikutnya(init_iter))
cetak(berikutnya(init_iter))
# Tentukan perulangan while tak terbatas
sementara Benar:
mencoba:
# ulangi dan cetak nilai menggunakan metode __next__()()
cetak(init_iter.__lanjut__())
kecuali StopIteration:
# Hentikan dari loop setelah mengulangi semua nilai
istirahat

Keluaran

Output berikut menunjukkan bahwa setelah menjalankan skrip, dua nilai pertama, 'Burung' dan 'Singa,' dicetak dengan 'lanjut()', sedangkan tiga nilai lainnya, 'Monyet,"Ular,' dan 'Gajah,' dicetak dengan '__lanjut__()' metode.

Iterasi dengan Iterator Kustom

Bagian ini menunjukkan bagaimana berbagai jenis iterator khusus dapat diimplementasikan dengan membuat kelas. Keduanya '__iter__()' dan '__lanjut__()metode ' akan diimplementasikan di kelas, dan 'sementara' loop akan digunakan untuk mengulangi nilai objek yang dapat diubah.  Bagian selanjutnya dari artikel ini juga akan menunjukkan cara membuat iterator kustom tak terbatas dan mengontrol iterasi.

Contoh 4: Penggunaan Iterator Kustom Sederhana

Skrip berikut memungkinkan Anda menghitung nilai xtidak dengan menggunakan iterator khusus tanpa menggunakan fungsi bawaan Python. Kelas bernama 'x_to_the_power_n' dideklarasikan dalam skrip. '__init__()' metode kelas akan menginisialisasi nilai-nilai x dan tidak yang akan digunakan pada saat pembuatan objek. '__iter__()' metode akan menginisialisasi variabel kelas, yang akan menyimpan 'hasil' variabel perhitungan di setiap iterasi. Nilai dari x dan tidak akan diambil sebagai masukan dari pengguna. Sebuah objek dari kelas 'angka' dibuat dengan x dan tidak. Selanjutnya, objek yang dapat diubah bernama 'iter_obj' dibuat untuk memanggil '__lanjut__()' metode untuk n-1 kali dengan menggunakan 'sementara' loop untuk menghitung nilai xtidak. Pada setiap iterasi, nilai x akan dikalikan dengan nilai sebelumnya dari 'hasil' variabel. Setelah mengakhiri 'sementara' lingkaran, '__lanjut__()' metode akan dipanggil lagi untuk mencetak nilai xtidak.

"Buat kelas untuk menghitung
x ke pangkat n menggunakan iterator
"
kelas x_to_the_power_n:
# Inisialisasi nilai x dan n
def __init__(sendiri, x=0, n=0):
diri.x = x
diri.n = n
# Inisialisasi iterable
def __iter__(sendiri):
diri.hasil = 1
kembalikan diri
# Hitung nilai di setiap iterasi
def __berikutnya__(sendiri):
jika diri sendiri.n >= 0:
diri.hasil *= sendiri.x
diri.n -= 1
kembalikan diri.hasil
# Ambil nilai x dan n
x = int(input("Masukkan nilai x : "))
n = int(input("Masukkan nilai n : "))
# Buat objek kelas
angka = x_to_the_power_n(x,n)
# Buat iterable
iter_obj = iter(angka)
mencoba:
saya = 0
ketika saya < n-1):
# Ambil nilai berikutnya menggunakan metode next()
berikutnya(iter_obj)
saya+=1
print("\n%d pangkat %d adalah %d" %(x,n,iter_obj.__lanjut__()))
kecuali StopIteration:
# Hentikan dari skrip jika tidak ada nilai
cetak(berikutnya(iter_obj))

Keluaran

Output berikut menunjukkan bahwa 2 diambil sebagai nilai x dan 4 diambil sebagai nilai tidak. Jadi, skrip menghitung nilai 2menjadi 16.

Contoh 5: Penggunaan Iterator Kustom Tak Terbatas

Script berikut akan terus mencetak angka yang habis dibagi 5 dengan penundaan satu detik hingga pengguna menekan Ctrl + c untuk menghasilkan 'KeyboardInterupsi' sinyal. yang tak terbatas'sementara' loop digunakan di sini untuk membuat iterator kustom tak terbatas. 'waktu' modul diimpor di awal skrip untuk menggunakan 'tidur()' metode untuk menunda setiap output selama satu detik. Angka 5 diinisialisasi ke 'nomorvariabel ' sebagai angka pertama yang habis dibagi dalam skrip, dan angka berikutnya dihasilkan dengan menambahkan 5 dengan nilai sebelumnya dari 'nomor' variabel.

# Impor modul waktu
waktu impor
"
Buat kelas untuk menghasilkan angka
yang habis dibagi 5 terus menerus
"
kelas Number_Divisible_by_five:
# Inisialisasi nilai num
def __iter__(sendiri):
diri.bilangan = 5
kembalikan diri
# Hitung angka berikutnya yang habis dibagi 5
def __berikutnya__(sendiri):
nomor_berikutnya = diri sendiri.nomor
waktu.tidur(1)
diri.bilangan += 5
kembali berikutnya_num next
# Buat objek kelas
Objek = Number_Divisible_by_five()
# Buat objek yang dapat diubah
iterObjek = iter(Objek)
# Tentukan loop tak terbatas
sementara Benar:
mencoba:
# Pergi untuk iterasi berikutnya
cetak (itemObject.__lanjut__())
kecuali KeyboardInterrupt:
print("Ctrl+C ditekan.")
# Hentikan dari loop saat Ctrl+C ditekan
istirahat

Keluaran

Output berikut menunjukkan bahwa nomor mulai mencetak dari 5 dan terus mencetak nomor berikutnya satu demi satu dengan durasi satu detiksecond. Saat pengguna menekan Ctrl + c setelah mencetak nomor 60, pesan 'Ctrl + C ditekan.' dicetak, sebelum mengakhiri skrip.

Contoh 6: Mengontrol Iterator Tak Terbatas Kustom

Skrip berikut menunjukkan cara menghentikan iterator tak terbatas khusus setelah menyelesaikan sejumlah iterasi yang ditentukan. '__iter__()' metode kelas akan menginisialisasi nilai-nilai 'tidak' dan 'hasil'variabel kelas. Script akan menghitung kuadrat dari angka, mulai dari 1, yang disimpan dalam variabel tidak, dan cetak nilai kuadrat dari tidak sampai nilai tidak lebih besar dari 5. Perulangan while tak terbatas dideklarasikan di sini untuk memanggil '__lanjut__()' metode untuk mencetak nilai kuadrat dari tidak. Bila nilai tidak mencapai 6, 'Berhenti Iterasi' sinyal akan dihasilkan untuk mengakhiri loop.

# Impor modul waktu
waktu impor
"
Buat kelas untuk menghitung
kuadrat bilangan dimulai dari 1 sampai
nilai bilangan kurang dari 6
"
kelas hitung_kekuatan:
# Inisialisasi nilai num
def __iter__(sendiri):
diri.n = 1
diri.hasil = 0
kembalikan diri
# Hitung angka berikutnya yang habis dibagi 5
def __berikutnya__(sendiri):
# Periksa nilai n kurang dari atau sama dengan 5 atau tidak
jika diri sendiri.tidak <= 5:
diri.hasil = sendiri.n**2
waktu.tidur (0.5)
diri.n + = 1
kembalikan diri.hasil
lain:
naikkan StopIteration
# Buat objek kelas
Objek = hitung_kekuatan()
# Buat objek yang dapat diubah
iterObjek = iter(Objek)
# Tentukan loop tak terbatas
sementara Benar:
mencoba:
# Pergi untuk iterasi berikutnya dan cetak nilai kuadrat
print("Kuadrat dari %d adalah %d" %(iterObject.n, iterObject.__lanjut__()))
kecuali StopIteration:
print("\nDihentikan dari loop.")
# Hentikan dari loop
istirahat

Keluaran

Output berikut menunjukkan bahwa iterator kustom tak terbatas dihentikan ketika nilai n menjadi lebih besar dari 5. Skrip menghitung dan mencetak nilai kuadrat dari nilai angka dari 1 hingga 5.

Iterasi dengan itertools

Python memiliki modul bawaan bernama 'itertools' yang dapat digunakan untuk membuat iterator untuk iterasi data menggunakan loop. Bagian selanjutnya dari artikel ini menunjukkan cara menggunakan tiga fungsi dalam modul ini.

itertools.menghitung()

Itu 'itertools.lanjut' fungsi dapat digunakan dengan 'peta()' metode untuk menghasilkan data sekuensial dan dengan 'zip()' metode untuk menambahkan urutan dengan menggunakan parameter count dari metode ini. Sintaks dari fungsi ini diberikan di bawah ini.

Sintaksis

itertools.hitung(mulai=0, langkah=1)

Di sini, parameter pertama, 'Mulailah,' digunakan untuk menentukan nilai awal dari barisan, dan 0 adalah nilai default dari parameter ini. Parameter kedua, 'langkah,' digunakan untuk mengatur perbedaan antara angka berurutan, dan 1 adalah nilai default dari parameter ini.

Contoh 7: Penggunaan count() Fungsi itertools

Script berikut akan menghitung jumlah dari 0 untuk tidak bilangan, dimana nilai tidak akan diambil dari pengguna. 'menghitung()' fungsi diimpor dari 'itertools' di awal naskah. 'my_iterator' objek diinisialisasi dengan 'menghitung()' fungsi, dengan 'Mulailah'nilai 0 dan a'langkah'nilai 1. Selanjutnya, 'jumlah_hasil' variabel diinisialisasi oleh nilai pertama dari objek yang dapat diubah. Nilai awal diinisialisasi ke variabel saya dan angka awal disimpan sebagai karakter dalam variabel, angka yang akan digunakan untuk menggabungkan angka lain di setiap iterasi. Nilai dari nomor urut akan ditambahkan di setiap iterasi ketika 'lanjut()' metode disebut. Bila nilai saya menjadi lebih besar dari tidak, skrip akan berakhir dengan menampilkan hasil penjumlahan.

"Skrip berikut akan menghitung
jumlah 0 dengan angka yang akan diambil sebagai input.
"
# Jumlah impor
dari hitungan impor itertools
# Membuat objek iterable count()
my_iterator = hitung(mulai=0, langkah=1)
# Baca nilai pertama dari iterator
sum_result = berikutnya(my_iterator)
# Ambil input angka untuk mengakhiri loop while tak terbatas
n = int(input("Masukkan nilai limit :"))
# Inisialisasi nilai i dan angka
i = jumlah_hasil
angka = f'i'
# Nyatakan loop tak terbatas
sementara Benar:
# Tambahkan nomor di setiap iterasi
jumlah_hasil += i
i = selanjutnya(my_iterator)
# Hentikan loop jika nilai i lebih dari n
jika (i > n):
istirahat
# Tambahkan nilai angka sebagai string dengan simbol '+'
angka += "+" + f'i'
# Cetak nilai akhir
print("%s = %d" % (angka,jumlah_hasil))

Keluaran

Output berikut menunjukkan bahwa nomor 10 diambil sebagai input yang digunakan untuk mengakhiri loop setelah menjalankan skrip. Dalam output ini, skrip telah menghitung jumlah dari 0 hingga 10 dan mencetak output, 0+1+2+3+4+5+6+7+8+9+10 = 55.

Itertools.siklus()

Fungsi ini hanya berisi satu argumen, yang dapat berupa objek apa pun. Tujuan dari fungsi ini adalah untuk mengulang nilai-nilai objek setelah menyelesaikan iterasi semua nilai. Di sini, string, tupel, daftar, dll. dapat digunakan sebagai objek. Pengembalian objek yang dapat diulang dari fungsi ini digunakan untuk mengulangi setiap nilai objek yang akan digunakan sebagai argumen dengan menggunakan 'lanjut()' metode. Berapa kali nilai dari objek iterable akan diulang akan didasarkan pada jumlah iterasi dari loop. Sintaks dari fungsi ini diberikan di bawah ini.

Sintaksis

itertools.siklus (Objek)

Contoh 8: Penggunaan cycle() Fungsi itertools

'acak' dan 'itertools' modul diimpor di awal skrip untuk menghasilkan nomor acak dan menggunakan 'siklus()' fungsi dari  'itertools' modul untuk mengulang data. Daftar tiga angka acak digunakan sebagai argumen dari 'siklus()' fungsi. Objek yang dapat diubah bernama 'num_list' diinisialisasi oleh nilai kembali dari fungsi ini. 'menghitung' variabel diinisialisasi ke 0, dan ketika nilai variabel ini menjadi 6, 'sementara' loop akan berakhir. Sehingga 'sementara' loop akan diulang enam kali, dan setiap nilai daftar hanya akan diulang satu kali.

# Impor modul acak
impor acak
# Impor modul itertools
impor itertools
# Hasilkan objek yang dapat diubah berdasarkan daftar tiga angka acak
num_list = itertools.siklus([acak.randint(1,5),acak.randint(10,50),acak.randint
(100.500)] )
# Inisialisasi penghitung
hitung = 0
# Ulangi loop selama 6 kali
sementara (hitung != 6):
print('Bilangan acak saat ini adalah: ' + f'next(num_list)')
hitung +=1

Keluaran

Output berikut menunjukkan bahwa tiga angka acak, 3, 17, dan 185, telah dibuat sebagai item daftar. Loop diulang enam kali, dan ketiga nilai ini diulang untuk iterasi berikutnya.

Itertools.ulang()

Fungsi 'repeat()' bekerja seperti iterator tak terbatas dan dapat mengambil dua argumen. Ketika argumen kedua dihilangkan, fungsi 'repeat()' berfungsi sebagai iterator tak terhingga dan mengulang nilai berkali-kali. Fungsi ini tidak menempati memori untuk setiap pengulangan. Itu hanya membuat variabel satu kali di memori dan mengulangi variabel yang sama berkali-kali ketika hanya satu argumen yang ditetapkan untuk fungsi ini. Sintaks dari fungsi ini diberikan di bawah ini.

Sintaksis

itertools.ulangi (nilai, batas)

Argumen pertama digunakan untuk mengambil nilai yang akan diulang. Argumen kedua adalah opsional dan digunakan untuk mengatur batas pengulangan.

Contoh 9: Penggunaan repeat() Fungsi Modul itertools

'itertools' modul diimpor di awal skrip untuk menggunakan 'ulang()' fungsi. Nilai string akan diambil dari pengguna untuk diulang, dan nilai angka akan diambil dari pengguna untuk mengatur batas pengulangan. Nilai kembali dari 'ulang()' fungsi kemudian akan diubah menjadi daftar dengan 'daftar()' metode dan disimpan di 'daftarData' variabel. Nilai-nilai 'daftarData' akan dicetak dengan 'untuk' lingkaran.

# Impor modul itertools
impor itertools
# Ambil nilai input yang akan diulang
string = input("Masukkan string : ")
# Ambil nilai angka untuk diulang
repeat = int(input("Masukkan angka yang akan diulang : "))
# menggunakan repeat() untuk berulang kali menambahkan string ke dalam daftar
listData= daftar(itertools.ulangi (tali, ulangi))
# Inisialisasi i
saya = 1
print("Nilai daftarnya adalah : \n")
# Ulangi daftar menggunakan for loop
untuk val di listData:
print("Daftar item %d =%s" %(i,val))
saya += 1

Keluaran

Output berikut menunjukkan bahwa 'Python' diambil sebagai nilai string, dan 3 diambil sebagai nomor yang digunakan untuk mengulang nilai string setelah menjalankan skrip. Output menunjukkan bahwa string 'Python' diulang tiga kali.

Kesimpulan

Konsep iterator dan penggunaan berbagai jenis iterator dalam Python coba dijelaskan dengan contoh yang sangat sederhana dalam artikel ini. Pengguna Python dapat menggunakan iterator bawaan atau dapat membuat iterator khusus mereka berdasarkan kebutuhan. Artikel ini akan membantu pengguna python untuk mengetahui tentang metode yang digunakan dalam iterator dan bagaimana metode ini bekerja dengan loop apa pun untuk membaca objek apa pun yang dapat diubah. Beberapa kegunaan dari itertools modul python juga dijelaskan dalam artikel ini untuk mengetahui lebih detail tentang iterator di python.

Instal Dolphin Emulator terbaru untuk Gamecube & Wii di Linux
Dolphin Emulator memungkinkan Anda memainkan game Gamecube & Wii pilihan Anda di Komputer Pribadi (PC) Linux. Menjadi emulator game sumber terbuka da...
Cara Menggunakan Cheat Engine GameConqueror di Linux
Artikel ini mencakup panduan tentang menggunakan mesin cheat GameConqueror di Linux. Banyak pengguna yang bermain game di Windows sering menggunakan a...
Emulator Konsol Game Terbaik untuk Linux
Artikel ini akan mencantumkan perangkat lunak emulasi konsol game populer yang tersedia untuk Linux. Emulasi adalah lapisan kompatibilitas perangkat l...