Fungsi Python iter () mengembalikan iterator untuk objek yang diberikan.
Yang iter()
fungsi mencipta objek yang boleh mengulangi satu elemen pada satu masa.
Objek ini berguna apabila digabungkan dengan gelung seperti gelung, sementara gelung.
Sintaks iter()
fungsi adalah:
iter (objek, sentinel)
iter () Parameter
Yang iter()
mengambil dua parameter:
- objek - objek yang iteratornya harus dibuat (boleh menjadi set, tuple, dll.)
- sentinel (pilihan) - nilai khas yang digunakan untuk mewakili akhir urutan
Nilai pulangan dari iter ()
- Yang
iter()
mengembalikan objek iterator untuk objek yang diberikan. - Sekiranya objek yang ditentukan pengguna tidak melaksanakan
__iter__()
, dan__next__()
atau__getitem()__
,TypeError
pengecualian akan dibangkitkan. - Sekiranya parameter sentinel juga disediakan,
iter()
kembalikan iterator sehingga watak sentinel tidak dijumpai.
Contoh 1: Mengendalikan Python iter ()
# list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'
Pengeluaran
aeiou
Contoh 2: iter () untuk objek tersuai
class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))
Pengeluaran
1 2 3 Jejak Balik (panggilan terakhir terakhir): Fail "", baris 23, dalam Fail "", baris 11, di __next__ StopIteration
Contoh 3: iter () dengan parameter sentinel
class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x)
Pengeluaran
2 4 8
Di sini, kami telah melaksanakan objek yang dapat dipulihkan secara khusus tanpa StopIteration
syarat.
Namun, kita dapat menggunakan iter()
metode dengan sentinel
parameter untuk menghentikan lelaran. Sekiranya nilai yang dikembalikan __next__()
adalah sama sentinel
, StopIteration
akan dinaikkan, jika tidak, nilainya akan dikembalikan.
Bacaan yang Disyorkan: Python Iterators