我在python中有一个类似于
的节点类class Node:
def __init__(self, value, next, prev, rand):
self.value = value
self.next = next
self.prev = prev
self.rand = rand
我通过创建节点和设置适当的指针来创建一个列表。现在,我想打印这个列表:如[1] - > [2] - > [3]等等。如果随机指针与next一起,则它将是[1] - > [2] - > [3,4] - > [4]例如。这里2接下来是3和2 rand是4而3接下来是4.我试图在它自己的节点类中使用内置的 str ()方法。我现在的情况如下
#pretty print a node
def __str__(self):
if self.next is None:
return '[%d]' % (self.value)
else:
return '[%d]-->%s' % (self.value, str(self.next))
这很漂亮,没有随机指针。但是我无法在其中加入随机指针打印。我尝试了几种方法,但它搞砸了方括号。我该怎么做呢?
由于
答案 0 :(得分:0)
尝试将指针的打印分解出来,这样可能更清楚:
#pretty print a node
def __str__(self):
if self.next is None:
return self.stringify_pointers()
else:
return '%s-->%s' % (self.stringify_pointers(), str(self.next))
def stringify_pointers(self):
s = '['
if self.next:
s += str(self.next) + (',' if self.rand else '')
if self.rand:
# <> to distinguish rand from next
s += '<%s>' % str(self.rand)
return s + ']'
答案 1 :(得分:0)
一种方法是在字符串上使用数组切片并将随机值注入下一个节点字符串,如下所示
def __str__(self):
if self.next is None:
return '[%d]' % (self.value)
else:
nn = str(self.next)
if self.rand != None:
nn = '%s,%d%s' % (nn[:2], self.rand, nn[2:])
return '[%d]-->%s' % (self.value, nn)