I want to know exactly about Python del reserved words. In the process of studying linked list, I got curious about del reserved words. First, common frame code.
class Node:
def __init__(self, data, nxt=None):
self.data = data
self.nxt = nxt
class NodeMgmt:
def __init__(self, data):
self.head = Node(data)
def add(self, data):
current_node = self.head
while current_node.nxt is not None:
current_node = current_node.nxt
current_node.nxt = Node(data)
def desc(self):
current_node = self.head
while current_node:
print(current_node.data)
current_node = current_node.nxt
I don't understand the result value of this code
def delete(self,data):
current_node = self.head
while current_node.data != data:
current_node = current_node.nxt
del current_node
lnk = NodeMgmt(1)
lnk.add(2)
lnk.desc() >>> 1 2
lnk.delete(2)
lnk.desc() >>> 1 2
I know the following code is correct.
def delete(self,data):
current_node = self.head
current_node_parent = self.head
while current_node:
if current_node.data != data:
current_node_parent = current_node
current_node = current_node.nxt
else:
break
current_node_parent.nxt = current_node.nxt
I would like to point out clearly for the flexible use of del
li = [1,2,3]
li1 = li
li1.append(1)
print(li)
del li1[2:]
print(li) # >>> [1,2]
del li1
print(li) # >>> [1,2] Why isn't this deleted?