iteratori python3 e generatori
Iterator
Iterazione è una delle caratteristiche più potenti di Python è un modo per accedere agli elementi della collezione. .
Un iteratore è un attraversamento dell'oggetto può ricordare la posizione.
oggetto Iterator è accessibile dall'inizio del primo elemento della raccolta fino a quando tutti gli elementi sono accessibili completamente chiuso. Iterator può muoversi solo in avanti non indietro.
Iterator ha due metodi di base: iter () e next ().
Stringa, un elenco o tuple oggetti possono essere usati per creare un iteratore:
>>> list=[1,2,3,4] >>> it = iter(list) # 创建迭代器对象 >>> print (next(it)) # 输出迭代器的下一个元素 1 >>> print (next(it)) 2 >>>
oggetto Iterator può essere utilizzato per dichiarazione traverse convenzionale:
#!/usr/bin/python3 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 for x in it: print (x, end=" ")
Il programma precedente, i risultati di output sono i seguenti:
1 2 3 4
È inoltre possibile utilizzare la funzione successiva ():
#!/usr/bin/python3 import sys # 引入 sys 模块 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 while True: try: print (next(it)) except StopIteration: sys.exit()
Il programma precedente, i risultati di output sono i seguenti:
1 2 3 4
generatore
In Python, utilizzando la funzione di rendimento è noto come un generatore (generatore).
La differenza è che con una funzione ordinaria, il generatore è una funzione di ritorno iteratore può essere utilizzata solo operazioni iterative, più semplici da capire Builder è un iteratore.
Chiamando il generatore è in funzione il processo, funzione di rendimento incontrato si arresterà ogni volta e salvare tutte le informazioni operative attuali, il valore di ritorno della resa. Continuare va dalla posizione corrente e la successiva next () metodo di esecuzione.
L'esempio seguente utilizza le rendimento realizzato colonne di Fibonacci:
#!/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()
Il programma precedente, i risultati di output sono i seguenti:
0 1 1 2 3 5 8 13 21 34 55