簡體   English   中英

Python賦值命令語法

[英]Python assignment command grammar

我正在閱讀以下python代碼段,有些內容我不理解。 root是一個自定義類,代表一個樹節點。 誰能解釋為什么root的Assignment命令以這種方式起作用?

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

[root.left, root.right]是2個值的list

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

因此,這是一種避免(顯式)測試值的方法,只需根據01索引結果即可(但測試仍然存在)

盡管這似乎是一個好主意,但在Python中進行這種構造的效率令人懷疑:它動態創建一個列表,然后按索引(使用邊界檢查)對其進行訪問,更不用說它必須同時評估兩個root.leftroot.right不管結果如何(沒有短路)。

我認為您最好使用以下三元表達式:

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

它是顯式的,短路的,並且不會創建/訪問臨時列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM