生成迭代器快照,在底层用深拷贝又拷贝了一份list对象
import copy
class MyListIterator:
def __init__(self, items):
self.items = copy.deepcopy(items)
self.index = 0
self.length = len(self.items)
def __iter__(self):
return self
def __next__(self):
if self.index < self.length:
item = self.items[self.index]
self.index += 1
return item
else:
# 当没有更多元素时,抛出 StopIteration 异常
raise StopIteration
class myList(list):
def __init__(self, iterable=()):
super().__init__(iterable)
def __iter__(self):
return MyListIterator(self[:])
# 可以添加额外的功能,例如打印时更友好的格式
def __str__(self):
return f'myList({super().__str__()})'
my_list = myList([1,2,3])
for i in my_list:
if i==1:
my_list.remove(1)
print(i)
print("=====")
for i in my_list:
print(i)