gpt4 book ai didi

Python赋值命令语法

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:11 27 4
gpt4 key购买 nike

我正在阅读以下 python 代码片段,但有些地方我不明白。 root 是一个自定义类,代表一个树节点。谁能解释为什么 root 的分配命令以这种方式工作?

   while (p.val - root.val) * (q.val - root.val) > 0:
root = [root.left, root.right][p.val > root.val]

最佳答案

[root.left, root.right] 是一个包含 2 个值的列表

p.val > root.val 是用作索引的 bool 值:值可以是 0 或 1。

所以这是一种避免(明确地)测试值的方法,只需根据 01 索引结果(但测试仍然存在)

虽然这看起来是个好主意,但在 Python 中这种构造的效率值得怀疑:它动态构建一个列表,然后通过索引访问它(使用边界检查),更不用说它必须同时评估两者root.leftroot.right 无论结果如何(无短路)。

我认为使用以下三元表达式会更好:

root =  root.right if p.val > root.val else root.left

它是显式的、短路的,并且不会创建/访问临时列表。

关于Python赋值命令语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399650/

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