Ссылки:
Большое спасибо Безумному физику , cdrake и Рафаэлю за ваши предложения, которые направили меня в ту сторону, в которой ячтобы получить ответ, необходимо войти в систему.
Ответ:
Хитрость заключается в том, чтобы никогда не выполнять назначения, такие как C = B; B = A;
, поскольку это приведет к потере информации, когда переменные начнут ссылаться на новые объекты.а старые объекты заброшены и оставлены для некоторых переменных, к которым бесполезно обращаться.
Вместо этого мы должны сделать каждый из этих уже объявленных объектов для хранения информации о том, как достичь конца цепочки.Это можно сделать следующим образом:
# Initial Declaration
A = []; B = []; C = []; D = []
# Chain Formation
C.append(B)
B.append(A)
D.append(C)
# Data Addition at Chain head
A.append("DATA")
Это дает:
>>> A
['DATA']
>>> B
[['DATA']]
>>> C
[[['DATA']]]
>>> D
[[[['DATA']]]]
Теперь у каждой из переменных есть доступ к данным, добавленным в Chain Head.Эти данные могут быть получены путем многократного ввода в индекс 0 списка, пока мы не достигнем объекта, который не имеет типа <class 'list'>
.Реализация, приведенная ниже, прояснит:
def GetData(Chain):
C = Chain.copy()
while len(C) > 0 and type(C[0]) == type([]):
C = C[0]
if len(C):
return C[0]
else:
return None
>>> ( GetData(A), GetData(B), GetData(C), GetData(D) )
('DATA', 'DATA', 'DATA', 'DATA')
Этот способ хранения информации с целью направления предыдущих членов к тому же источнику информации, что и глава Цепи, очень полезен, поскольку он может мгновенно передаватьизменение окончательной информации для членов на спине.Пример, основанный на предыдущем коде, показан ниже:
# Initial Declaration for New Chain
P = []; Q = []
# New Chain Formation
Q.append(P)
# Old Chain Redirection
C.remove(C[0])
C.append(Q)
# Attempted Data Recovery
>>> ( GetData(A), GetData(B), GetData(C), GetData(D), GetData(P), GetData(Q) )
('DATA', 'DATA', None, None, None, None)
# Data Addition at New Chain Head
P.append((0,0))
# Attempted Data Recovery
>>> ( GetData(A), GetData(B), GetData(C), GetData(D), GetData(P), GetData(Q) )
('DATA', 'DATA', (0, 0), (0, 0), (0, 0), (0, 0))
Это мое решение проблемы, с которой я столкнулся.Пожалуйста, не стесняйтесь предлагать изменения в случае необходимости.
Еще раз спасибо всем, кто направил меня к этому решению.