gpt4 book ai didi

python - 如何在Python中的无序列表中的特定索引处设置列表中的节点数据?

转载 作者:太空宇宙 更新时间:2023-11-03 15:25:03 26 4
gpt4 key购买 nike

我想创建一个方法,在列表中的特定索引处设置节点数据。我的节点列表是:

class Node:
"""
Node class
"""

def __init__(self, initdata):
self.data = initdata
self.next = None

def get_data(self):
"""
Returns data
"""
return self.data

def get_next(self):
"""
Gets next node
"""
return self.next

def set_data(self, newdata):
"""
Sets current nodes data
"""
self.data = newdata

def set_next(self, newnext):
"""
Sets next node
"""
self.next = newnext

我的无序列表类是这样的:

class UnorderedList:
"""
Unordered list
"""

def __init__(self):
self.head = None

def add(self, item):
"""
Add item to list
"""
temp = Node(item)
temp.set_next(self.head)
self.head = temp

def set(self, index, newdata):
"""
Set node-data in list at specific index
"""
current = self.head
for i in range(index):
current = current.get_next()
if current != None:
temp = Node(newdata)
temp.set_next(current.get_next())
current.set_next(temp)
else:
raise("index out of range")

def print_list(self):
"""
Prints each item in list
"""
# Traversera listan och gör en print() på varje element
result = "["
node = self.head
if node != None:
result += str(node.data)
node = node.next
while node:
result += ", " + str(node.data)
node = node.next
result += "]"
return result

当您尝试在列表中添加一个项目时,它的效果非常好,如下所示:

myListTwo = UnorderedList()
myListTwo.add(4)
myListTwo.add(50)
myListTwo.add(6)
myListTwo.add(10)
myListTwo.add(60)

print(myListTwo.print_list())

比你得到的列表:

[60, 10, 6, 50, 4]

问题是当我尝试将节点数据放入列表中的特定索引时,我得到了这个结果:

myListTwo.set(2, 70)
print(myListTwo.print_list())

我得到了这个结果:

[60, 10, 6, 70, 50, 4]

您 70 岁,指数为 3,而不是指数 2,知道吗?

最佳答案

这正如预期的那样:您将新节点插入到第 i 个节点之后。因此,在您的示例中,您正确找到了第三个节点 (6),并立即在其后面插入节点 70

一个简单的修复可能是:

def set(self, index, newdata):
"""
Set node-data in list at specific index
"""
current = self.head
previous = None
for i in range(index):
previous = current
current = current.get_next()
if current != None:
temp = Node(newdata)
temp.set_next(current)
if previous is None:
self.head = temp
else:
previous.set_next(temp)
else:
raise("index out of range")

关于python - 如何在Python中的无序列表中的特定索引处设置列表中的节点数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43231855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com