In der Spalte „Python-Tutorial“ werden Iteratoren vorgestellt, die bei der Programmierung verwendet werden.
Verwandte kostenlose Lernempfehlungen:
Python-Tutorial(Video)Das Iteratormuster ist ein klassisches Software-Designmuster, das mittlerweile in viele Programmiersprachen integriert ist. Dieses Design Muster. Unter den primitiven Datentypen von Python sind diejenigen, die für Schleifen verwendet werden können, iterierbare Typen. Natürlich können Sie auch die Funktion iter verwenden, um den entsprechenden Iterator abzurufen und dann das Objekt zu durchlaufen. Zum Beispiel der folgende Code:So implementieren Sie iterierbare Objekte und Iteratorobjekte
l = [1, 3] # 可迭代对象 __iter__t = iter(l) #获取迭代器对象print(t.__next__()) print(t.__next__())# print(t.__next__()) # 报异常复制代码
from random import samplefrom collections import Iterable, Iteratorclass WeatherIterator(Iterator): def __init__(self, cities): self.cities = cities self.index = 0 def getWeather(self, city): return (city, sample(['sun','wind','yu'], 1)[0]) def __next__(self): if self.index == len(self.cities): raise StopIteration city = self.cities[self.index] self.index += 1 return self.getWeather(city)复制代码
from collections import Iterableclass WeatherIterable(Iterable): def __init__(self, cities): self.cities = cities self.index = 0 def __iter__(self): return WeatherIterator(self.cities)复制代码
for weather in WeatherIterable(['北京', '上海', '广州']): print(weather)复制代码
def gen(): print("step 1") yield 1 print("step 2") yield 2 print("step 3") yield 3复制代码
g = gen() g.__next__() print(g.__next__()) print(g.__next__())复制代码
for x in g: print(x)复制代码
class PrimeNumbers: def __init__(self, start, end): self.start = start self.end = end def isPrimeNum(self, k): #判断是否是素数 if k < 2: return False for i in range(2, k): if k % i == 0: return False return True def __iter__(self): for k in range(self.start, self.end + 1): if self.isPrimeNum(k): yield kfor num in PrimeNumbers(2, 100): print(num)复制代码
l = [1, 2, 3, 4, 5]for x in reversed(l): print(x)复制代码
class FloatRange: def __init__(self, start, end, step=0.1): self.start = start self.end = end self.step = step def __iter__(self): t = self.start while t <= self.end: yield t t += self.step def __reversed__(self): t = self.end while t >= self.start: yield t t -= self.stepfor x in FloatRange(1.0, 4.0, 0.5): print(x)for x in reversed(FloatRange(1.0, 4.0, 0.5)): print(x)复制代码
from itertools import islicefor x in islice(FloatRange(1.0, 4.0, 0.5), 2, 5): print(x)复制代码
for w, e, m in zip([1, 2, 3, 4], ('a', 'b', 'c','d'), [5, 6, 7, 8]): print(w, e, m)复制代码
from itertools import chainfor x in chain([1, 2, 3, 4], ('a', 'b', 'c','d')): print(x)复制代码
Das obige ist der detaillierte Inhalt vonGeschrieben für Python-Programmiermeister 2: Iteratoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!