与这个定义中的打印功能混淆


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.valuelist1.next

或者在X类中创建__str__方法。

您需要具有以下项之一才能显示您希望类如何打印:

__str____repr__

以下是文档

Python 将根据内存中的类位置打印出默认值。为了自定义它,您需要在类X中定义其中一个方法

相关内容

  • 没有找到相关文章

最新更新