【发布时间】:2021-11-02 19:05:24
【问题描述】:
我有 3 个对象 Item1、Item2 和 一个自定义迭代器。 Item2 与 Item1 相同,但它比 Item1 多实现了一个函数__iter__(),__iter__() 将返回一个自定义迭代器。
class Item1():
def __init__(self, stop):
self.stop = stop
def __len__(self):
return self.stop - 1
def __getitem__(self, index):
if index < self.stop:
return index + 1
raise IndexError
class Item2():
def __init__(self, stop):
self.stop = stop
def __len__(self):
return self.stop - 1
def __getitem__(self, index):
if index < self.stop:
return index + 1
raise IndexError
def __iter__(self):
iterator = MyIterator(self.stop)
return iterator
class MyIterator:
def __init__(self, max_num):
self.max_num = max_num
self.index = 0
def __iter__(self):
return self
def __next__(self):
self.index += 1
if self.index <= self.max_num:
return self.index
else:
raise StopIteration
当我使用 for 循环迭代 Item1 和 Item2 时,将得到相同的结果。 但是,我想知道内存的使用会不会是一样的? Item2有迭代器的优势吗?
Item1 = Item1(100000)
item2 = Item2(100000)
for item in item1:
print(item)
for item in item2:
print(item)
【问题讨论】:
标签: python for-loop memory iterator sequence