从这个定义中混淆了打印功能

时间:2013-11-17 00:13:00

标签: python list linked-list

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)

应该导致错误

2 个答案:

答案 0 :(得分:4)

由于您的方法linkedlist正在返回X类的对象,因此您可能需要打印lst1.valuelist1.next

或者在__str__课程中创建X方法。

答案 1 :(得分:1)

您需要具备以下内容之一才能显示您希望课程打印的方式:

__str____repr__

here are the docs

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

中定义其中一个方法