Python中文
首页
教程
问答
标签
搜索
登录
注册
__递归数据结构的getitem或方括号
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>你好,StackOverflowers兄弟</p> <p>我正在实现一个二进制搜索树,它的接口与Python中的<code>dict</code>几乎相同(在任何人提出请求之前,我只是为了好玩,没有生产代码)。在</p> <p>为了在树中添加、检索和删除元素,我实现了<code>__getitem__</code>、<code>__setitem__</code>和{<cd4>},这非常好用。在</p> <p>问题是,由于这是一个递归的数据结构,如果当前节点没有我要查找的键,<code>__getitem__</code>方法本身就在树的左分支或右分支上调用<code>__getitem__</code>。在</p> <p>通过<code>__getitem__</code>或<code>[]</code>来执行这个递归调用的最“pythonic”方式是什么?在</p> <p>示例:</p> <pre><code>def __getitem__(self, key): if key == self.key: return self.value if key < self.key and self.left is not None: return self.left[key] if key > self.key and self.right is not None: return self.right[key] return None </code></pre> <p>与</p> ^{pr2}$ <p>我知道它们的工作原理完全一样,一个是另一个的包装,但这是一个风格问题。在</p> <p>直接使用<code>[]</code>可以提供更简洁的代码,更少的冗长,但是可能会误导那些不能立即理解指令基本上是方法的递归调用的人,因此<code>__getitem__</code>可以消除歧义。在</p> <p>请记住,我不是说在外部调用中使用一个或另一个,显然在这种情况下,<code>[]</code>应该被使用,但只能在方法内部使用,作为递归调用。在</p> <p>你有什么想法?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>使用<code>[ ]</code>方式。它就是这样设计的。如果您唯一关心的是误导代码的其他创建者,您可以通过在代码中添加注释来克服它。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
6 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
6 回答
在Python3中使用Script=argv
4 回答
在python3中使用selenium webdriver进行未解析的回溯
6 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
8 回答
在Python3中使用Selenium和Requests模块从网页获取文件
1 回答
在python3中使用SIGINT终止函数
9 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
8 回答
在python3中使用smtplib发送XML内容
7 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
8 回答
在python3中使用sounddevice和numpy编写wav文件
1 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
7 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
3 回答
在python3中使用SQLite的FTS3/4
6 回答
在Python3中使用struct.calcsize()和len()有区别吗?
7 回答
在python3中使用substring函数时发生TypeError
5 回答
在Python3中使用Tkinter entry小部件写入串行设备
1 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
3 回答
在python3中使用tkinter的子帧
7 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
7 回答