【发布时间】:2016-06-20 11:30:19
【问题描述】:
我正在尝试迭代地组合两个链表,但我现在所拥有的结果却相反。如果在创建结果列表之后,有没有办法以正确的顺序组合列表而不必反转?
class Link:
empty = ()
def __init__(self, first, rest=empty):
assert rest is Link.empty or isinstance(rest, Link)
self.first = first
self.rest = rest
def __add__(self, lst):
"""
>>>s = Link(1, Link(2))
>>>s + Link(3,Link(4))
Link(1,Link(2,Link(3,Link(4))))
"""
result = Link.empty
while self is not Link.empty:
result = Link(self.first,result)
self = self.rest
while lst is not Link.empty:
result = Link(lst.first, result)
lst = lst.rest
return result
【问题讨论】:
-
看起来你已经创建了一个堆栈。 :)
-
您的列表是否旨在不可变?这很重要,因为不可变列表允许您采取一些捷径(例如重用列表的一部分),如果列表可能被其他代码修改,您就无法做到)。
标签: python linked-list iteration