pythonic链表理解

时间:2016-04-13 16:30:27

标签: python linked-list

是否有更好的pythonic方式编写下面的代码片段?我没有看到使用列表理解的方法。

上下文是我有一个链接的节点列表,在相关的__str __()例程中,我想将线程转换为列表并打印结果

temp = []
node = firstNode
while node:
    temp.append(str(node))
    node = node.next
return '{' + '->'.join(temp) + '}'

发布脚本

感谢您的链接;他们给了我这个解决方案的想法,我觉得很有趣。我觉得它很优雅,但并不明显,所以它不是pythonic。

foo = lambda x: [str(x)]+foo(x.next) if x else []
return '{' + '->'.join(foo(firstNode)) + '}'

解释... foo是一个递归的lambda函数。如果我要写

foo = lambda x: [x] if x else []

然后foo( )将返回空列表并返回包含x的列表以用于任何其他值。如果我把它递归

foo = lambda x: [x]+foo(x.next) if x else []

然后foo继续在链表中的下一个节点上调用自己,直到它到达最后一个节点。它从最后一次调用返回空列表,然后将当前节点预先添加到累积列表,直到它完全爬出递归调用。我的解决方案中的代码执行相同操作,但在执行前置操作之前将节点转换为字符串。

0 个答案:

没有答案