Я создаю связанный список в python и пытаюсь объединить все узлы. Изначально мой код выглядит следующим образом:
class Node:
def __init__(self, val):
self.val=val
self.next=None
a=[1,2,3,4,5]
new_l=Node(a[0])
ptl=new_l.next
for i in range(1, 5):
ptl=Node(a[i])
ptl=ptl.next
# return new_l
Мое первоначальное намерение ptl=Node(a[i])
состоит в том, чтобы связать Node(a[i])
с текущим местоположением ptl
. Однако фактический эффект состоит в том, что python создает новый Node(a[i])
(в новом случайном месте), и вместо этого ptl
указывает на Node(a[i])
. Поэтому я потерял след предыдущей позиции, где был список.
Я нашел способ обойти проблему, изменив код следующим образом:
b=[1,2,3,4,5]
new_l=Node(b[0])
ptl=new_l
for i in range(1, 5):
ptl.next=Node(b[i])
ptl=ptl.next
, и он работает. Тем не менее, мне все еще интересно, есть ли способ написать name=value
(как в C ++), чтобы изменить значение в расположении «имя», вместо создания значения (и некоторого другого местоположения) и вместо этого назвать его «имя» .
Кажется, python "переменные" ведут себя как нечто среднее между переменными C ++ и указателями C ++.