Python: tuple與list的區別


只看定義的話,Tuple會被理解為元素不可變(immutable)的List。但如果只是如此,完全沒有必要引入一個新的類型。

 

這里有一個很有意思的討論。其中舉了個例子。比如你去散步,在每一時刻,你都可以記錄下自己的位置,比如$(x,y)$,這是一個Tuple;把這個坐標點放到一個List中,然后每隔一段時間,增添新的坐標點。這樣很符合邏輯。但反過來就講不通了。這反映了Tuple內的各元素之間很強的互補關系--它們共同描述了一個個體。在這個例子中,就是一個坐標點;你如果試圖去掉其中的$x$坐標,從兩維降到一維,這個Tuple就沒有意義了--沒人知道它代表那個點。這是Tuple元素不可增添或刪減的原因。

 

另一方面,各坐標點之間的關系則只有先后關系,沒有強烈的邏輯關聯。所以你如果去掉List的末尾一個坐標點--沒問題,現在的List表示的是在你到達倒數第二點前的路線。

 

用上述討論中的一句話總結,就是“List有(先后)次序,Tuple有(邏輯)結構”。

 

另一個說法也很有道理,Tuple是一個微型的Class。毫無疑問,Class中的所有元素都是為了描述同一個事物而存在。

 

(按照最小化的思想,Tuple的確不必引入。但從理解一段代碼的角度,看到一個Tuple,我們馬上就知道它在描述一件事物,邏輯上顯然更加清晰易懂。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM