2. 你知道 Python 裡的 string 跟 list 是有差別的嗎?

2023年12月27日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

在 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 這樣設計,會有以下好處:

  1. 安全性:因為 immutable ,所以在多線程的狀況下也無需擔心同步的問題。
  2. 效率:因為不可修改,所以如果有多個變量指向同一個字串時,實際上他們都會指向同一個內存位置。
  3. Hash key cache: 因為 string 不得修改,所以如果 dictionary 的 key 值是 string 時,在創建時就會先計算好,而不用每一次調用時重新計算。
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們