我的数据结构如下:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
我想逐个迭代ListNode,直到下一个是None
我可以使用while
,但是可以使用map()或reduce()或其他东西来使代码更漂亮吗?
答案 0 :(得分:0)
我不认为reduce
是适合这项工作的工具。首先,您的ListNode
实际上不可迭代,但您可以通过实施__iter__
函数来解决此问题:
class ListNode:
def __init__(self, x, succ=None):
self.val = x
self.succ = succ
def __iter__(self):
cur = self
while cur is not None:
yield cur
cur = cur.succ
这里,__iter__
是一个生成器函数,yield
下一个后继者,直到到达列表的末尾。现在,您可以使用常规for
循环来迭代链表:
lst = ListNode(1, ListNode(2, ListNode(3, ListNode(4, ListNode(5)))))
for ln in lst:
print ln.val