Cara menggunakan I.T.E.R. pada Python

Python menyediakan dua objek iterator untuk tujuan umum. Yang pertama, iterator urutan, bekerja dengan objek yang mendukung metode __getitem__(). Yang kedua bekerja dengan objek yang bisa dipanggil dan nilai penjaga (sentinel), memanggil callable untuk setiap item dalam urutan, dan mengakhiri iterasi ketika nilai penjaga dikembalikan.

Table of Contents

  • Metode Iterator
  • Iterasi dengan Loop
  • Contoh 1: Iterasi Objek Iterable dengan ‘untuk’ Loop
  • Contoh 2: Iterasi Daftar dengan 'sementara' Loop
  • Contoh 3: Iterasi Tuple dengan Metode '__next__()' dan 'sementara' Loop
  • Iterasi dengan Iterator Kustom
  • Contoh 4: Penggunaan Iterator Kustom Sederhana
  • Contoh 5: Penggunaan Iterator Kustom Tak Terbatas
  • Contoh 6: Mengontrol Iterator Tak Terbatas Kustom
  • Iterasi dengan itertools
  • itertools.count()
  • itertools.cycle()
  • Itertools.repeat()
  • Apa itu iterator pada Python?
  • Apa iterator?
  • Apa itu Iterables?

PyTypeObject PySeqIter_Type

Tipe objek untuk objek iterator yang dikembalikan oleh PySeqIter_New() dan bentuk satu argumen dari fungsi bawaan iter() untuk tipe urutan bawaan.

int PySeqIter_Check(op)

Return true if the type of op is PySeqIter_Type.

PyObject* PySeqIter_New(PyObject *seq)¶Return value: New reference.

Mengembalikan iterator yang bekerja dengan objek urutan umum, seq. Iterasi berakhir ketika urutan memunculkan IndexError untuk operasi berlangganan (subscripting).

PyTypeObject PyCallIter_Type

Tipe objek untuk objek iterator yang dikembalikan oleh PyCallIter_New() dan bentuk dua argumen dari fungsi bawaan iter() .

int PyCallIter_Check(op)

Return true if the type of op is PyCallIter_Type.

PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)¶Return value: New reference.

Mengembalikan iterator baru. Parameter pertama, callable, dapat berupa objek Python callable apa saja yang bisa dipanggil tanpa parameter; setiap pemanggilan harus mengembalikan butir (item) berikutnya pada iterator. Ketika callable mengembalikan nilai sama dengan sentinel, perulangan akan dihentikan.

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. Ia bekerja seperti kursor database dan digunakan untuk membaca daftar catatan satu per satu. Misalnya, ‘for‘ 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 useran ‘itertools‘ fungsi juga dijelaskan di bagian terakhir dari tutorial ini.

Metode Iterator

Setiap objek iterator berisi dua metode berikut.

  • _ _iter_ _()

Metode ini digunakan untuk menginisialisasi objek iterable. Objek yang dikembalikan memiliki metode ‘_ _next_ _()‘ dengan Python3.

  • _ _next_ _()

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

Cara menggunakan I.T.E.R. pada Python

Iterasi dengan Loop

Disebutkan sebelumnya bahwa ‘for‘ lingkaran memanggil ‘next()‘ secara implisit saat mengulangi objek yang dapat diubah. Ketika sebuah loop digunakan untuk mengulangi objek yang dapat diubah, ‘for‘ lingkaran memanggil ‘next()‘ metode secara implisit dan ‘while‘ lingkaran memanggil ‘next()‘ atau ‘__next__()‘ secara eksplisit untuk membaca nilai berikutnya dari objek yang dapat diubah. Kedua jenis loop terus memanggil metode ini hingga ‘StopIteration‘ sinyal dihasilkan.

Contoh 1: Iterasi Objek Iterable dengan ‘untuk’ Loop

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

 str = "Python"
for val in str :
    print(val)

# Iterating an existing file using for loop
print("nnReading a file line by line using for loop")  
for line in open("test.txt"):
    print(line, end="")

# # Iterating a tuple using for loop
print("nnTuple Iteration using for loop")
tup = ("Book", "Paper", "Pencil", "Pen")
for val in tup:
    print(val)

    # Iterating a list using for loop
print("nnList Iteration using for loop")
listdata = ["Designer", "Analyst", "Programmer","Administrator"]
for val in listdata:
    print(val)

            # Iterating a dictionary using for loop
print("nnDictionary Iteration using for loop")    
dictval = {'Meher': 95, 'Sakib': 97, 'Akhi': 70, 'Fiaz': 78}
for index in dictval :
    print("%s achieved %d marks" %(index, dictval[index]))

Keluaran

Output berikut me
nunjukkan bahwa karakter dari nilai string; garis-garis itutest.txtmengajukan; dan item dari tupel, daftar, dan kamus dicetak setelah menjalankan skrip.

Contoh 2: Iterasi Daftar dengan 'sementara' Loop

Script berikut menunjukkan useran 'while' loop untuk mengulangi daftar data. Di sini, 'iter()' digunakan untuk menginisialisasi objek yang dapat diubah, dan 'next()' digunakan untuk membaca nilai berikutnya dari objek yang dapat diubah. StopIteration sinyal digunakan untuk mengakhiri dari yang tak terbatas 'while’ loop ketika tidak ada item dari daftar yang tersisa untuk dibaca.

 
# Declare and infinite while loop  
while True:
    try:
        # next() method is used for iterate next value
        value = next(init_iter_object)
        print(value)

            except StopIteration:
        # Terminate from the loop after iterating all values
        break

Keluaran

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

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

Dalam skrip berikut, keduanya 'next()' dan '__next__()' metode yang digunakan untuk iterasi nilai-nilai tupel. 'iter()' metode digunakan untuk membuat objek yang dapat diubah, bernama 'init_iter.' Di sini, 'next()' dipanggil dua kali untuk mencetak dua nilai pertama dari tuple. Selanjutnya, tak terbatas 'while' loop digunakan untuk mengulangi nilai-nilai yang tersisa dari Tuple dan 'StopIteration' digunakan untuk mengakhiri dari loop, seperti pada contoh sebelumnya.

 
# Initialize an iterator object using iter()
init_iter = iter(animal_tuple)

    # iterate and print value using next() method
print(next(init_iter))
print(next(init_iter))

    # Define an infinite while loop
while True:
    try:
        # iterate and print value using __next__() method
        print(init_iter.__next__())

            except StopIteration:
        # Terminate from the loop after iterating all values
        break

Keluaran

Output berikut menunjukkan bahwa setelah menjalankan skrip, dua nilai pertama, 'Bird' dan 'Lion,' dicetak dengan 'next()', sedangkan tiga nilai lainnya, 'Monkey,' 'Snake,' dan 'Elephant,' dicetak dengan '__next__()' metode.

Iterasi dengan Iterator Kustom

Bagian ini menunjukkan bagaimana berbagai jenis iterator kustom dapat diimplementasikan dengan membuat kelas. Keduanya '__iter__()' dan '__next__()' metode akan diimplementasikan di kelas, dan 'while' loop akan digunakan untuk mengulangi nilai dari 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 xndengan 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 nyang akan digunakan pada saat pembuatan objek. '__iter__()' metode akan menginisialisasi variabel kelas, yang akan menyimpan 'result' variabel perhitungan di setiap iterasi. Nilai darix dan nakan diambil sebagai masukan dari user. Sebuah objek dari kelas 'numbers' dibuat dengan x dan n. Selanjutnya, objek yang dapat diubah bernama‘iter_obj' dibuat untuk memanggil '__next__()' metode untuk n-1 kali dengan menggunakan 'while' loop untuk menghitung nilai xn. Pada setiap iterasi, nilaix akan dikalikan dengan nilai sebelumnya dari 'result' variabel. Setelah mengakhiri 'while' lingkaran, '__next__()' metode akan dipanggil lagi untuk mencetak nilai xn.

 n = int(input("Enter the value of n: "))

# Create an object of the class
numbers = x_to_the_power_n(x,n)

# Create an iterable
iter_obj = iter(numbers)
try:
    i = 0
    while(i < n-1):

                # Retrive the next value using next() method
        next(iter_obj)
        i+=1

            print("n%d to the power %d is %d"  %(x,n,iter_obj.__next__()))

      except StopIteration:
    # Terminate from the script if no value exists
    print(next(iter_obj))

Keluaran

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

Contoh 5: Penggunaan Iterator Kustom Tak Terbatas

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

         # Terminate from the loop when Ctrl+C is pressed
        break

Keluaran

Output berikut menunjukkan bahwa nomor tersebut mulai mencetak dari 5 dan terus mencetak nomor berikutnya satu demi satu dengan durasi satu detik. Saat user menekanCtrl + c setelah mencetak nomor 60, pesan 'Ctrl+C is pressed.' dicetak, sebelum menghentikan skrip.

Contoh 6: Mengontrol Iterator Tak Terbatas Kustom

Skrip berikut menunjukkan cara menghentikan iterator tak terbatas kustom setelah menyelesaikan sejumlah iterasi yang ditentukan. '__iter__()' metode kelas akan menginisialisasi nilai-nilai 'n' dan 'result' variabel kelas. Script akan menghitung kuadrat dari angka, mulai dari1, yang disimpan dalam variabel n, dan cetak nilai kuadrat dari n sampai nilai n lebih besar dari 5. Perulangan while tak terbatas dideklarasikan di sini untuk memanggil '__next__()' metode untuk mencetak nilai kuadrat dari n. Bila nilain mencapai 6, 'StopIteration' akan menghasilkan sinyal untuk mengakhiri loop.

     except StopIteration:
        print("nTerminated from the loop.")
        # Terminate from the loop
        break

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.count()

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

Sintaksis

''' following script will calculate
the sum of 0 to the number that will be taken as input.
'''
# Import count
from itertools import count

# Creates an iterable object of count()
my_iterator = count(start=0, step=1)
# Read the first value from the iterator
sum_result = next(my_iterator)

# Take a number input to terminate the infinite while loop
n = int(input("Enter the limit value:"))

# Initialize the value of i and numbers
i = sum_result
numbers = f'{i}'

# Declare infinite loop
while True:
    # Add the number in each iteration
    sum_result += i
    i = next(my_iterator)
    # Terminate the loop if the value of i is more than n
    if(i > n):
        break
    # Add the number value as a string with '+' symbol
    numbers += "+" + f'{i}'

    # Print the final value
print("%s = %d" % (numbers,sum_result))

Keluaran

Output berikut menunjukkan bahwa nomor 10diambil 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.cycle()

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 'next()' metode. Berapa kali nilai dari objek iterable akan diulang akan didasarkan pada jumlah iterasi dari loop. Sintaks fungsi ini diberikan di bawah ini.

Sintaksis

# Import random module
import random

# Import itertools module
import itertools

# Generate an iterable object based on the list of three random numbers
num_list = itertools.cycle([random.randint(1,5),random.randint(10,50),random.randint
(100,500)] )

# Initialize the counter
count = 0

# Iterate the loop for 6 times
while(count != 6):
    print('current random number is: ' + f'{next(num_list)}')
    count+=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.repeat()

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 fungsi ini diberikan di bawah ini.

Sintaksis

# Import itertools module
import itertools    

# Take the input value that will repeat
string = input("Enter a string: ")
# Take the number value to repeat
repeat = int(input("Enter the number to repeat: "))

# using repeat() to repeatedly add the string into a list    
listData= list(itertools.repeat(string, repeat))

# Initilize i
i = 1
print ("list values are : n")
# Iterate the list using for loop  
for val in listData:
    print("List item %d =%s" %(i,val))
    i += 1

Keluaran

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

Kesimpulan

Konsep iterator dan useran 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 user 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 dariitertools modul python juga dijelaskan dalam artikel ini untuk mengetahui lebih detail tentang iterator di python.

Apa itu iterator pada Python?

Iterator Python. Sebuah iterator Python adalah kelas yang mendefinisikan sebuah fungsi __iter__() . Sebagian besar objek Python bersifat iterable, artinya kamu bisa melakukan loop terhadap setiap elemen dalam objek tersebut. Contoh iterable pada Python misalnya string, list, tuple, dictionary, dan range.

Apa iterator?

Iterator merupakan object yang dapat digunakan untuk melakukan iterasi pada collection, seperti ArrayList dan HashSet. Iterator disebut “iterator” karena “iterasi” merupakan istilah teknis untuk pengulangan, yaitu mengakses nilai-nilai yang disimpan pada collection satu per-satu.

Apa itu Iterables?

Iterables/bisa di iterasi adalah objek yang mengimplementasikan metode Symbol.iterator , seperti yang dideskripsikan diatas. Array-likes/Seperti array adalah objek yang memiliki indeks dan length , jadi mereka terlihat seperti array.