Latest web development tutorials

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