iterator Python3 dan generator
iterator
Iterasi adalah salah satu fitur yang paling kuat dari Python adalah cara untuk mengakses elemen koleksi. .
Iterator adalah traversal dari objek ingat lokasi.
objek iterator dapat diakses dari awal elemen pertama dari koleksi sampai semua elemen diakses sepenuhnya berakhir. Iterator hanya bisa bergerak maju tidak mundur.
Iterator memiliki dua metode dasar: iter () dan selanjutnya ().
String, daftar, atau tuple objek dapat digunakan untuk membuat iterator:
>>> list=[1,2,3,4] >>> it = iter(list) # 创建迭代器对象 >>> print (next(it)) # 输出迭代器的下一个元素 1 >>> print (next(it)) 2 >>>
objek iterator dapat digunakan untuk pernyataan melintasi konvensional:
#!/usr/bin/python3 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 for x in it: print (x, end=" ")
Di atas program, hasil output adalah sebagai berikut:
1 2 3 4
Anda juga dapat menggunakan fungsi berikutnya ():
#!/usr/bin/python3 import sys # 引入 sys 模块 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 while True: try: print (next(it)) except StopIteration: sys.exit()
Di atas program, hasil output adalah sebagai berikut:
1 2 3 4
generator
Python, menggunakan fungsi yield dikenal sebagai generator (generator).
Perbedaannya adalah bahwa dengan fungsi biasa, generator adalah fungsi kembali iterator hanya dapat digunakan operasi berulang, lebih sederhana untuk memahami Builder adalah iterator.
Memanggil generator berjalan proses, fungsi yield ditemui akan berhenti setiap kali dan menyimpan semua informasi operasi saat ini, nilai kembali dari hasil. Terus berjalan dari lokasi saat ini dan metode berikutnya () eksekusi berikutnya.
Contoh berikut menggunakan hasil menyadari Fibonacci kolom:
#!/usr/bin/python3 import sys def fibonacci(n): # 生成器函数 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return yield a a, b = b, a + b counter += 1 f = fibonacci(10) # f 是一个迭代器,由生成器返回生成 while True: try: print (next(f), end=" ") except StopIteration: sys.exit()
Di atas program, hasil output adalah sebagai berikut:
0 1 1 2 3 5 8 13 21 34 55