Python

Pengulangan di Python

Pengulangan di Python
Iterator adalah alat berharga untuk Python. Ia adalah objek yang digunakan untuk mengulangi semua elemen koleksi. Iterator memberikan akses ke elemen wadah, tetapi ia tidak melakukan lelaran dengan sendirinya. Ia berfungsi seperti kursor pangkalan data dan digunakan untuk membaca senarai rekod satu persatu. Contohnya, a 'untukgelung yang mengulangi nilai wadah berfungsi sebagai iterator. Python mempunyai banyak iterator bawaan untuk objek berulang, seperti senarai, tupel, kamus, dll. Tanpa iterator ini, 'itertoolsfungsi boleh digunakan untuk mengembalikan iterator lain di Python. Artikel ini menunjukkan cara menggunakan gelung sebagai iterator, iterator khusus, iterator tak terbatas, dan mengawal iterator tak terbatas di Python 3. Beberapa kegunaan 'itertoolsFungsi-fungsi juga dijelaskan di bahagian terakhir tutorial ini.

Kaedah Iterator

Setiap objek iterator mengandungi dua kaedah berikut.

Kaedah ini digunakan untuk menginisialisasi objek berulang. Objek yang dikembalikan mempunyai kaedah '_ _sebelah_ _ ()'di Python 3.

Kaedah ini mengembalikan nilai seterusnya dari objek berulang. Hubungan antara iterator dan objek berulang ditunjukkan dalam rajah berikut.

Berterusan dengan Gelung

Telah disebutkan sebelumnya bahawa 'untuk'gelung memanggil'seterusnya ()kaedah secara tersirat ketika mengulangi objek yang boleh diulang. Apabila gelung digunakan untuk mengulangi objek berulang, 'untuk'gelung memanggil'seterusnya ()'kaedah secara tersirat dan'sementara'gelung memanggil'seterusnya ()'atau'__sebelah __ ()'kaedah secara eksplisit untuk membaca nilai seterusnya dari objek berulang. Kedua-dua jenis gelung terus memanggil kaedah ini sehingga 'StopIterasi'isyarat dihasilkan.

Contoh 1: Mengulangi Objek Berterusan dengan Gelung 'untuk'

Skrip berikut menunjukkan penggunaan 'untukgelung untuk mengulangi lima objek berulang yang berbeza. Yang pertama 'untukGelung digunakan untuk mengulangi nilai rentetan dan mencetak setiap watak rentetan dalam setiap lelaran. Yang kedua 'untuk'loop digunakan untuk mengulangi kandungan fail teks yang ada dan mencetak setiap baris fail dalam setiap lelaran. Ketiga 'untukGelung digunakan untuk mengulangi nilai tuple. Yang keempat 'untukgelung digunakan untuk mengulangi nilai yang terdapat dalam senarai. Yang kelima 'untuk'loop digunakan untuk mengulang nilai yang terdapat dalam kamus.

# Mengulirkan String menggunakan gelung
cetak ("String Iteration menggunakan untuk gelung")
str = "Python"
untuk val in str:
cetak (val)
# Memulihkan fail yang ada menggunakan loop
cetak ("\ n \ nMembaca baris demi baris fail menggunakan gelung")
untuk baris dalam keadaan terbuka ("ujian.txt "):
cetak (baris, akhir = "")
# # Memanaskan tuple menggunakan loop
cetak ("\ n \ nLebih banyak Pengulangan menggunakan untuk gelung")
tup = ("Buku", "Kertas", "Pensil", "Pena")
untuk val in tup:
cetak (val)
# Mengulihkan senarai menggunakan loop
cetak ("\ n \ nLakukan Pengulangan Daftar untuk gelung")
listdata = ["Pereka", "Penganalisis", "Pengaturcara", "Pentadbir"]
untuk val dalam listdata:
cetak (val)
# Mengulangi kamus menggunakan loop
cetak ("\ n \ nIterasi kamus menggunakan untuk gelung")
dictval = 'Meher': 95, 'Sakib': 97, 'Akhi': 70, 'Fiaz': 78
untuk indeks dalam darjat:
mencetak ("% s dicapai% d markah"% (indeks, dikit [indeks]))

Pengeluaran

Output berikut menunjukkan bahawa watak nilai rentetan; garis-garis dari ujian.txt fail; dan item tupel, senarai, dan kamus dicetak setelah menjalankan skrip.

Contoh 2: Daftar Pengulangan dengan Gelung 'manakala'

Skrip berikut menunjukkan penggunaan 'sementara'loop untuk mengulangi senarai data. Di sini, 'iter ()'Metode digunakan untuk menginisialisasi objek berulang, dan'seterusnya ()Kaedah digunakan untuk membaca nilai seterusnya objek yang boleh diulang. StopIterasi isyarat digunakan untuk menamatkan dari tak terhingga 'sementara ' gelung apabila tiada item senarai yang tersisa untuk dibaca.

# Tentukan senarai
listdata = ['google.com ',' bing.com ',' yahoo.com ',' baidu.com ',' duckduckgo.com ']
# Memulakan objek berulang
init_iter_object = iter (senarai data)
cetak ("Data Senarai Pengulangan menggunakan loop semasa: \ n")
# Menyatakan dan tanpa had semasa gelung
Walaupun Betul:
cuba:
Kaedah # next () digunakan untuk mengulangi nilai seterusnya
nilai = seterusnya (init_iter_object)
mencetak (nilai)
kecuali StopIteration:
# Hentikan dari gelung setelah mengulangi semua nilai
rehat

Pengeluaran

Output berikut menunjukkan bahawa setiap nilai senarai telah dicetak di setiap baris dengan menggunakan 'seterusnya ()kaedah selepas menjalankan skrip.

Contoh 3: Mengulangi Tuple dengan Kaedah '__next __ ()' dan 'while' Loop

Dalam skrip berikut, kedua-duanya 'seterusnya ()'dan'__sebelah __ ()Kaedah digunakan untuk mengulangi nilai tuple. The 'iter ()'Metode digunakan untuk membuat objek berulang, bernama'init_iter.'Ini,'seterusnya ()Kaedah dipanggil dua kali untuk mencetak dua nilai pertama tuple. Seterusnya, tidak terbatas 'sementara'loop digunakan untuk mengulang nilai baki tuple dan'StopIterasi'isyarat digunakan untuk menghentikan dari gelung, seperti contoh sebelumnya.

# tentukan tuple
animal_tuple = ('Burung', 'Singa', 'Monyet', 'Ular', 'Gajah')
cetak ("Nilai tuple adalah: \ n")
# Memulakan objek iterator menggunakan iter ()
init_iter = iter (haiwan_tuple)
# iterate dan nilai cetak menggunakan kaedah seterusnya ()
cetak (seterusnya (init_iter))
cetak (seterusnya (init_iter))
# Tentukan loop sementara yang tidak terhingga
Walaupun Betul:
cuba:
# iterate dan nilai cetak menggunakan kaedah __next __ ()
cetak (init_iter.__sebelah __ ())
kecuali StopIteration:
# Hentikan dari gelung setelah mengulangi semua nilai
rehat

Pengeluaran

Output berikut menunjukkan bahawa setelah menjalankan skrip, dua nilai pertama, 'Burung'dan'Singa,'dicetak dengan'seterusnya ()'Kaedah, sementara tiga nilai lain,'Monyet,"Ular,'dan'Gajah,'dicetak dengan'__sebelah __ ()kaedah.

Pengulangan dengan Iterator Kustom

Bahagian ini menunjukkan bagaimana pelbagai jenis iterator tersuai dapat dilaksanakan dengan membuat kelas. Kedua-dua__iter __ ()' dan juga '__sebelah __ ()'kaedah akan dilaksanakan dalam kelas, dan'sementaraGelung akan digunakan untuk mengulangi nilai objek yang boleh diulang.  Bahagian seterusnya dari artikel ini juga akan menunjukkan cara membuat iterator khusus yang tidak terbatas dan mengawal lelaran.

Contoh 4: Penggunaan Iterator Kustom Mudah

Skrip berikut membolehkan anda mengira nilai xn dengan menggunakan iterator tersuai tanpa menggunakan fungsi Python terbina dalam. Kelas bernama 'x_untuk_kekuatan_n'dinyatakan dalam skrip. The '__di dalamnya__()kaedah kelas akan menginisialisasi nilai x dan n yang akan digunakan pada masa penciptaan objek. The '__iter __ ()'Kaedah akan memulakan pemboleh ubah kelas, yang akan menyimpan'hasil'pemboleh ubah pengiraan dalam setiap lelaran. Nilai-nilai x dan n akan diambil sebagai input dari pengguna. Objek kelas 'nombor'dibuat dengan x dan n. Seterusnya, objek berulang boleh dinamakan 'iter_obj'dicipta untuk memanggil'__sebelah __ ()kaedah untuk n-1 kali dengan menggunakan 'sementaragelung untuk mengira nilai xn. Dalam setiap lelaran, nilai x akan didarabkan dengan nilai sebelumnya 'hasil'pemboleh ubah. Selepas menamatkan 'sementara'gelung, yang'__sebelah __ ()Kaedah akan dipanggil lagi untuk mencetak nilai xn.

Msgstr "Buat kelas untuk mengira
x ke kuasa n menggunakan iterator
"
kelas x_to_the_power_n:
# Memulakan nilai x dan n
def __init __ (diri, x = 0, n = 0):
diri.x = x
diri.n = n
# Mulakan secara berulang
def __iter __ (diri):
diri.hasil = 1
kembalikan diri
# Hitung nilai dalam setiap lelaran
def __sebelah __ (diri):
sekiranya diri.n> = 0:
diri.hasil * = diri.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
nombor = x_to_the_power_n (x, n)
# Buat berulang kali
iter_obj = iter (nombor)
cuba:
i = 0
Sementara saya < n-1):
# Dapatkan semula nilai seterusnya menggunakan kaedah seterusnya ()
seterusnya (iter_obj)
i + = 1
cetak ("\ n% d ke daya% d adalah% d"% (x, n, iter_obj.__sebelah __ ()))
kecuali StopIteration:
# Tamatkan dari skrip jika tidak ada nilai
cetak (seterusnya (iter_obj))

Pengeluaran

Output berikut menunjukkan bahawa 2 diambil sebagai nilai x dan 4 diambil sebagai nilai n. Jadi, skrip mengira nilai 2akan menjadi 16.

Contoh 5: Penggunaan Iterator Kustom yang Tidak Terbatas

Skrip berikut akan terus mencetak nombor yang dapat dibahagi dengan 5 dengan kelewatan satu saat sehingga pengguna menekan Ctrl + c untuk menjana 'Papan Kekunci Terganggu' isyarat. Yang tidak terbatas 'sementaragelung digunakan di sini untuk membuat iterator khusus yang tidak terhingga. The 'masa'modul diimport pada awal skrip untuk menggunakan'tidur ()kaedah untuk menunda setiap output selama satu saat. Nombor 5 diinisialisasi menjadi 'bilangan'pemboleh ubah sebagai nombor terbahagi pertama dalam skrip, dan nombor seterusnya dihasilkan dengan menambahkan 5 dengan nilai sebelumnya'bilangan'pemboleh ubah.

# Modul masa import
masa import
"
Buat kelas untuk menghasilkan nombor
yang boleh dibahagi dengan 5 secara berterusan
"
Nombor kelas_Divisible_by_five:
# Mula nilai num
def __iter __ (diri):
diri.angka = 5
kembalikan diri
# Hitung nombor seterusnya yang boleh dibahagi dengan 5
def __sebelah __ (diri):
next_num = diri.bilangan
masa.tidur (1)
diri.angka + = 5
kembali next_num
# Buat objek kelas
Objek = Number_Divisible_by_five ()
# Buat objek berulang
iterObject = iter (Objek)
# Tentukan gelung tak terhingga
Walaupun Betul:
cuba:
# Pergi untuk lelaran seterusnya
cetak (iterObject.__sebelah __ ())
kecuali KeyboardInterrupt:
cetak ("Ctrl + C ditekan.")
# Hentikan dari gelung apabila Ctrl + C ditekan
rehat

Pengeluaran

Keluaran berikut menunjukkan bahawa nombor itu mula dicetak dari 5 dan terus mencetak nombor berikutnya satu demi satu dengan jangka masa satu saat. Semasa pengguna menekan Ctrl + c setelah mencetak nombor 60, mesej 'Ctrl + C ditekan.'dicetak, sebelum menamatkan skrip.

Contoh 6: Mengawal Iterator Tak Terbatas Custom

Skrip berikut menunjukkan cara menghentikan iterator tak terbatas khusus setelah menyelesaikan bilangan lelaran yang ditentukan. The '__iter __ ()'kaedah kelas akan menginisialisasi nilai'n'dan'hasil'pemboleh ubah kelas. Skrip akan mengira kuasa dua nombor, bermula dari 1, yang disimpan dalam pemboleh ubah n, dan mencetak nilai segiempat bagi n sehingga nilai n lebih besar daripada 5. Gelung sementara yang tidak terbatas dinyatakan di sini untuk memanggil '__sebelah __ ()kaedah untuk mencetak nilai kuasa dua n. Apabila nilai n mencapai 6, yang 'StopIterasi'isyarat akan dihasilkan untuk menghentikan gelung.

# Modul masa import
masa import
"
Buat kelas untuk dikira
kuasa dua nombor bermula dari 1 hingga
nilai bilangannya kurang daripada 6
"
kelas hitung_kekuatan:
# Mula nilai num
def __iter __ (diri):
diri.n = 1
diri.hasil = 0
kembalikan diri
# Hitung nombor seterusnya yang boleh dibahagi dengan 5
def __sebelah __ (diri):
# Periksa nilai n kurang dari atau sama dengan 5 atau tidak
sekiranya diri.n <= 5:
diri.hasil = diri.n ** 2
masa.tidur (0.5)
diri.n + = 1
kembalikan diri.hasil
lain:
menaikkan StopIteration
# Buat objek kelas
Objek = hitung_kekuatan ()
# Buat objek berulang
iterObject = iter (Objek)
# Tentukan gelung tak terhingga
Walaupun Betul:
cuba:
# Pergi untuk lelaran seterusnya dan cetak nilai kuadrat
cetak ("Persegi% d adalah% d"% (iterObject.n, iterObject.__sebelah __ ()))
kecuali StopIteration:
cetak ("\ nTamat dari gelung.")
# Hentikan dari gelung
rehat

Pengeluaran

Output berikut menunjukkan bahawa iterator khusus tidak terbatas dihentikan ketika nilai n menjadi lebih besar daripada 5. Skrip dikira dan dicetak nilai kuadrat dari nilai nombor dari 1 hingga 5.

Berulang dengan itertools

Python mempunyai modul terbina dalam bernama 'itertools'yang dapat digunakan untuk membuat iterator untuk mengulang data menggunakan loop. Bahagian seterusnya dari artikel ini menunjukkan cara menggunakan tiga fungsi dalam modul ini.

itertools.kira ()

The 'itertools.samb'fungsi boleh digunakan dengan'peta ()'kaedah untuk menghasilkan data berurutan dan dengan'zip ()kaedah untuk menambahkan urutan dengan menggunakan parameter kiraan kaedah ini. Sintaks fungsi ini diberikan di bawah.

Sintaks

itertools.kiraan (mula = 0, langkah = 1)

Di sini, parameter pertama, 'mulakan,'digunakan untuk menentukan nilai permulaan urutan, dan 0 adalah nilai lalai parameter ini. Parameter kedua, 'langkah,'digunakan untuk menetapkan perbezaan antara nombor berturut-turut, dan 1 adalah nilai lalai parameter ini.

Contoh 7: Penggunaan kiraan () Fungsi itertools

Skrip berikut akan mengira jumlah dari 0 ke n nombor, di mana nilai n akan diambil dari pengguna. The 'kira ()'fungsi diimport dari'itertools'pada awal skrip. The 'my_iterator'objek diinisialisasi dengan'kira ()'fungsi, dengan'mulakan'nilai 0 dan a'langkah'nilai 1. Seterusnya,hasil_jumlahpemboleh ubah diinisialisasi oleh nilai pertama objek yang boleh diulang. Nilai permulaan diinisialisasi ke pemboleh ubah i dan nombor permulaan disimpan sebagai watak dalam pemboleh ubah, nombor yang akan digunakan untuk menggabungkan nombor lain dalam setiap lelaran. Nilai nombor berurutan akan ditambahkan dalam setiap lelaran apabila 'seterusnya ()kaedah dipanggil. Apabila nilai i menjadi lebih besar daripada n, skrip akan berakhir dengan memaparkan hasil jumlahnya.

"Skrip berikut akan dikira
jumlah 0 hingga nombor yang akan diambil sebagai input.
"
# Kiraan import
dari jumlah import itertools
# Membuat objek hitungan berulang ()
my_iterator = hitungan (mula = 0, langkah = 1)
# Baca nilai pertama dari iterator
sum_result = seterusnya (my_iterator)
# Ambil input nombor untuk menghentikan gelung sementara yang tidak terhingga
n = int (input ("Masukkan nilai had:"))
# Memulakan nilai i dan nombor
i = hasil_jumlah
nombor = f 'i'
# Menyatakan gelung tak terhingga
Walaupun Betul:
# Tambahkan nombor dalam setiap lelaran
jumlah_hasil + = i
i = seterusnya (my_iterator)
# Hentikan gelung jika nilai i lebih daripada n
jika (i> n):
rehat
# Tambahkan nilai nombor sebagai rentetan dengan simbol '+'
nombor + = "+" + f 'i'
# Cetak nilai akhir
cetak ("% s =% d"% (angka, jumlah_ hasil))

Pengeluaran

Output berikut menunjukkan bahawa bilangannya 10 diambil sebagai input yang digunakan untuk mengakhiri gelung setelah menjalankan skrip. Dalam output ini, skrip telah mengira jumlahnya dari 0 hingga 10 dan mencetak outputnya, 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55.

Alat Itertool.kitaran ()

Fungsi ini hanya mengandungi satu argumen, yang boleh menjadi objek apa pun. Tujuan fungsi ini adalah untuk mengulangi nilai-nilai objek setelah menyelesaikan lelaran semua nilai. Di sini, rentetan, tupel, senarai, dll. boleh dijadikan objek. Pengembalian objek berulang dari fungsi ini digunakan untuk mengulangi setiap nilai objek yang akan digunakan sebagai argumen dengan menggunakan 'seterusnya ()kaedah. Frekuensi nilai objek berulang akan didasarkan pada bilangan lelaran gelung. Sintaks fungsi ini diberikan di bawah.

Sintaks

itertools.kitaran (Objek)

Contoh 8: Penggunaan kitaran () Fungsi itertools

The 'rawak'dan'itertools'modul diimport pada awal skrip untuk menghasilkan nombor rawak dan menggunakan'kitaran ()'fungsi dari'itertools'modul untuk mengulangi data. Senarai tiga nombor rawak digunakan sebagai argumen 'kitaran ()'fungsi. Objek berulang yang dinamakan 'num_daftar'diinisialisasi oleh nilai kembali fungsi ini. The 'mengira'pemboleh ubah dimulakan ke 0, dan apabila nilai pemboleh ubah ini menjadi 6, yang 'sementaragelung akan berakhir. Jadi 'sementaragelung akan berulang sebanyak enam kali, dan setiap nilai senarai akan diulang sekali sahaja.

# Import modul rawak
import secara rawak
# Import modul itertools
import itertools
# Hasilkan objek berulang berdasarkan senarai tiga nombor rawak
num_list = itertools.kitaran ([rawak.randint (1,5), rawak.randint (10,50), rawak.randint
(100,500)])
# Permulaan kaunter
kiraan = 0
# Ulangi gelung selama 6 kali
sementara (hitung != 6):
cetak ('Nombor rawak semasa adalah:' + f 'next (num_list)')
hitung + = 1

Pengeluaran

Output berikut menunjukkan bahawa tiga nombor rawak, 3, 17, dan 185, telah dihasilkan sebagai item senarai. Gelung berulang kali enam kali, dan ketiga nilai ini diulang untuk lelaran seterusnya.

Alat Itertool.ulangi ()

Fungsi 'ulangi ()' berfungsi seperti iterator tak terhingga dan boleh mengambil dua argumen. Apabila argumen kedua dihilangkan, fungsi 'ulangi ()' berfungsi sebagai iterator tak terbatas dan mengulangi nilai sebilangan kali. Fungsi ini tidak memenuhi memori untuk setiap ulangan. Ini hanya membuat pemboleh ubah satu kali dalam memori dan mengulangi pemboleh ubah yang sama beberapa kali tak terbatas apabila hanya satu argumen yang ditetapkan untuk fungsi ini. Sintaks fungsi ini diberikan di bawah.

Sintaks

itertools.ulangi (nilai, had)

Argumen pertama digunakan untuk mengambil nilai yang akan berulang. Argumen kedua adalah pilihan dan digunakan untuk menetapkan had pengulangan.

Contoh 9: Penggunaan berulang () Fungsi Modul itertools

The 'itertools'modul diimport pada awal skrip untuk menggunakan'ulangi ()'fungsi. Nilai rentetan akan diambil dari pengguna untuk diulang, dan nilai nombor akan diambil dari pengguna untuk menetapkan had ulangan. Nilai pulangan bagi 'ulang ()'Fungsi kemudian akan ditukar menjadi senarai dengan'senarai ()'kaedah dan disimpan di'senaraiData'pemboleh ubah. Nilai-nilai 'senaraiData'akan dicetak dengan'untukgelung.

# Import modul itertools
import itertools
# Ambil nilai input yang akan berulang
string = input ("Masukkan rentetan:")
# Ambil nilai nombor untuk diulang
ulang = int (masukan ("Masukkan nombor yang akan diulang:"))
# menggunakan berulang () untuk menambahkan rentetan ke dalam senarai berulang kali
listData = senarai (itertools.ulangi (rentetan, ulangi))
# Memanfaatkan i
i = 1
cetak ("Nilai senarai adalah: \ n")
# Ulangi senarai menggunakan loop
untuk val dalam senaraiData:
cetak ("Item senarai% d =% s"% (i, val))
i + = 1

Pengeluaran

Output berikut menunjukkan bahawa 'Python'diambil sebagai nilai rentetan, dan 3 diambil sebagai nombor yang digunakan untuk mengulang nilai rentetan setelah menjalankan skrip. Output menunjukkan bahawa rentetan 'Python'diulang tiga kali.

Kesimpulannya

Konsep iterator dan penggunaan pelbagai jenis iterator di Python cuba dijelaskan dengan contoh yang sangat mudah dalam artikel ini. Pengguna Python boleh menggunakan iterator terbina dalam atau boleh membuat iterator tersuai berdasarkan keperluan. Artikel ini akan membantu pengguna python untuk mengetahui tentang kaedah yang digunakan dalam iterator dan bagaimana kaedah ini berfungsi dengan gelung apa pun untuk membaca objek berulang. Beberapa kegunaan itertools modul python juga dijelaskan dalam artikel ini untuk mengetahui lebih banyak perincian iterator di python.

Tiru klik Tetikus dengan melayang menggunakan Mouse Tanpa Klik di Windows 10
Menggunakan tetikus atau papan kekunci dalam keadaan salah penggunaan berlebihan boleh menyebabkan banyak masalah kesihatan, termasuk ketegangan, sind...
Tambahkan isyarat Tetikus ke Windows 10 menggunakan alat percuma ini
Dalam beberapa tahun kebelakangan ini komputer dan sistem operasi telah banyak berkembang. Ada saat ketika pengguna harus menggunakan perintah untuk m...
Mengawal & menguruskan pergerakan tetikus antara beberapa monitor di Windows 10
Pengurus Tetikus Paparan Dwi membolehkan anda mengawal & mengkonfigurasi pergerakan tetikus antara beberapa monitor, dengan memperlahankan pergerakann...