2. 你知道 Python 裡的 string 跟 list 是有差別的嗎?
2023年12月27日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
在 C 語言中 string 是用 array 做的,所以可以利用像是 array 的操作來操作 string。在 Python 也有類似的特性,舉例來說:
str = "this is a book"
assert str[0] == "t"
assert str[:4] == "this"
assert str[-4:] == "book"
因為操作類似,因此很多人可能會誤會 Python 的 string 跟 list 一樣,但其實有一個本質上最大的差異,就是 Python 的 string 是 immutable ,表示 string 是不能修改的!
str[0] = "T"
上面這個操作是會失敗的,因為字串不得修改!那為什麼要這樣設計呢?
上一篇 list 有講到類似概念,因為 string 這樣設計,會有以下好處:
- 安全性:因為 immutable ,所以在多線程的狀況下也無需擔心同步的問題。
- 效率:因為不可修改,所以如果有多個變量指向同一個字串時,實際上他們都會指向同一個內存位置。
- Hash key cache: 因為 string 不得修改,所以如果 dictionary 的 key 值是 string 時,在創建時就會先計算好,而不用每一次調用時重新計算。