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)
应导致 False
由于方法linkedlist
返回X
类的对象,因此可能需要打印lst1.value
或list1.next
。
或者在X
类中创建__str__
方法。
您需要具有以下项之一才能显示您希望类如何打印:
__str__
或__repr__
以下是文档
Python 将根据内存中的类位置打印出默认值。为了自定义它,您需要在类X
中定义其中一个方法