2013-11-17 3 views
-1
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']) 

Когда я печатаю это, я получаюConfused с функцией печати из этого определения

print(lst1) 
<__main__.LN object at 0x102957510> 

Я очень смущен, что происходит. Как я могу назвать это определение?

Edit:

Используя этот класс/функции, я пытаюсь создать эту рекурсивную функцию, которая возвращает выходной ли две связанные списки, равны или нет.

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) 

должно привести Правда

но

is_same(a, c) 

должно привести к Ложные

ответ

4

Поскольку ваш метод linkedlist я s возвращает объект класса X, вы можете распечатать lst1.value или list1.next.

Или создайте метод __str__ в вашем классе X.

1

вы должны иметь одно из следующих действий, чтобы отобразить, как вы хотите класс для распечатки:

__str__ или __repr__

here are the docs

Python напечатает по умолчанию в зависимости от расположения классов в памяти. Чтобы настроить его, вам необходимо определить один из этих методов внутри вашего класса. X

Смежные вопросы