class X:
def __init__(self,value,next=None):
self.value = value
self.next = next
def linkedlist(l):
if l == []:
return None
beg = end = X(l[0])
for v in l[1:]:
end.next = X(v)
end = end.next
return beg
lst1 = linkedlist(['one', 'two', 'three'])
lst2 = linkedlist(['one', 'three', 'four'])
当我打印时,我得到了
print(lst1)
<__main__.LN object at 0x102957510>
我对发生的事情感到非常困惑。我怎么称呼这个定义?
编辑:
使用这个类/函数,我试图创建这个递归函数,返回一个输出,无论两个链表是否相等。
def is_same(lst1, lst2):
if ll1.next.value == [] or ll2.next.value == []:
return True
elif ll1.next.value == ll2.next.value:
is_same(ll1.next.value, ll2.next.value)
我不确定如何处理这个功能,但这是我试图做的,但显然会导致错误。
a = linkedlist(['a', 'b', 'c''])
b = linkedlist(['a', 'b', 'c'])
c = linkedlist(['c', 'a', 'b'])
通话:
is_same(a, b)
应该导致True
但
is_same(a, c)
应该导致错误
答案 0 :(得分:4)
由于您的方法linkedlist
正在返回X
类的对象,因此您可能需要打印lst1.value
或list1.next
。
或者在__str__
课程中创建X
方法。
答案 1 :(得分:1)
您需要具备以下内容之一才能显示您希望课程打印的方式:
__str__
或__repr__
Python将根据内存中的类位置打印出默认值。要自定义它,您需要在类X