Python中关于无值变量的指针

2024-10-02 16:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个方法可以在树中创建一个新节点-左或右。如果值低于当前值,则将其插入左侧,否则将插入右侧。在

我想重构这段代码,这样我就可以先在哪一边插入元素,然后再插入它。在此之前,我执行了两次:一次用于左侧,一次用于右侧。在

目前的情况如下:

def neu(self, sortByValue, secondValue):
    child = self.left if(sortByValue.lower() < self.value[0].lower()) else self.right

    if(child == None):
        child = MyTree(sortByValue,secondValue)
    else: child.neu(sortByValue,secondValue)

但我的问题是自左没有,而且自我权利没有。所以当我创建child作为变量并将其设置为MyTree(…),自左以及自我权利没有收到值。在

有什么我能改进的吗?谢谢!在


Tags: 方法代码self权利child元素if节点
3条回答

你为什么要用树?在

我会用字典:

初始化:

tree = {}

添加新节点:

tree[sortByValue] = secondValue

提取东西

print tree[sortByValue]

不是直截了当的回答,而是一种更像Python的方式

哈罗;—)

self.leftself.right没有收到该值,因为您分配给child,后者只保存目标值的副本,而没有对它的引用。在

你想要一个指针-这在Python中并不直接存在。在

您可以使用类包装器来表达这一点,但我认为当您在if子句中同时编写这两种可能性时,它更容易理解。在

在Python中,变量是名称而不是位置。例如:

>>> a = 1
>>> b = a
>>> a = 2
>>> print b
1

在您的代码中,您只需将名称child重新绑定到另一个值(新节点),而这对先前绑定的值(None)没有影响。在

下面是一个代码的重新编写,它应该能满足您的需要(未经测试):

^{pr2}$

相关问题 更多 >