如何迭代此类对象的实例?



我需要迭代这个类的一个实例,而不必在这个类中实现其他东西。

我想过制作一个实例的深层副本,然后.pop()元素。但是,这个副本太贵了,我的程序无法工作。

有人有一个足够简单的想法吗?

class Frame:
'''
attributes :
- data :  
- next : next Frame or None
Dependencies : None
'''
def __init__(self,x):
self.data=x
self.next=None
class Linked_list:
'''
class for a linked list
attributes :
- head : Frame or None
methods :
- is_empty() : return true is the list is empty, false otherwise
- append(x) : add the data x at the head 
- pop() : if the linked list is not empty, pop the head, else do nothing and return None
- print() : print the list
Dependencies : class Frame
'''
def __init__(self):
self.head=None
def is_empty(self):
return self.head is None
def append(self,x):
new_head = Frame(x)
new_head.next = self.head
self.head = new_head
def pop(self):
if self.head is None:
return None
x=self.head.data
self.head=self.head.next
return x
def print(self):  # fonction d'affichage de la liste
print('Liste chainees= ',end='')
current=self.head
while current:
print(current.data,end=' ')
current=current.next
print()  

我想您可以将print方法重写为生成器函数:

def gen(your_list):
current=your_list.head
while current:
yield current.data
current=current.next

然后,您可以循环访问数据,例如:

a = Linked_list()
a.append(1)                                                    
a.append(2)
a.append(3)           
for i in gen(a):
print(i)

相关内容

  • 没有找到相关文章

最新更新