08 - 類型轉換&深淺拷貝

返回主頁

📄目錄

1. 類型轉換

💡 常見類型:

  1. int(x):將x轉換為一個整數

  2. float(x):將x轉換為一個浮點數

  3. str(x):將x轉換為字符串

  4. eval(str):用來計算在字符串中的有效Python表達式,並返回一個對象

  5. tuple(s):將序列s轉換為一個元組

  6. list(s):將序列s轉換為一個列表

  7. chr(x):將一個整數轉換為一個字符

1.1 int(x):轉換為一個整數,只能轉換由純數字組成的字符串

1.1.1 float -> int

python-logo

輸出結果:

1.1.2 str -> int

python-logo

輸出結果:

1.1.3 案例:用戶從控制台輸入,判斷年齡

python-logo

1.2 float():轉換為一個小數

python-logo

輸出結果:

1.3 str():轉換為字符串類型,任何類型都可以轉換

python-logo

輸出結果:

1.4 eval(str):用於執行一個字符串表達式並返回表達式的值

python-logo

輸出結果:

💡 eval()可以實現list、dict、tuple和str之間的轉換

1.4.1 str -> list

python-logo

輸出結果:

1.4.2 str -> dict

python-logo

輸出結果:

❗ eval功能強大,但是不夠安全,容易被惡意修改數據,不建議使用

1.5 list():將可迭代對象轉換成列表

支持轉換為list的類型:str、tuple、dict、set

1.5.1 str -> list

python-logo

輸出結果:

1.5.2 tuple -> list

python-logo

輸出結果:

1.5.3 dict -> list

python-logo

輸出結果:

1.5.3 set -> list

python-logo

輸出結果:

2. 深淺拷貝

2.1 賦值:賦值過的對象會隨原對象一起變化

python-logo

輸出結果:

💡 賦值:等於完全共享資源,一個值的改變會完全被另一個值共享。

2.2 淺拷貝(數據半共享)

💡 會創建新的對象,拷貝第一層的數據,嵌套層會指向原來的內存地址

python-logo

輸出結果:

💡 外層的內存地址不同,但是內層地址還是相同的

優點:拷貝速度快,佔用空間少,拷貝效率高

2.3 深拷貝(數據完全不共享)

💡 外層的對象和內部的元素都拷貝了一遍

❗ 深拷貝數據變化只影響自己本身,跟原來的對象沒有關聯

python-logo

輸出結果:

3. 可變對象

💡 含義:存儲空間保存的數據允許被修改,但是內存地址不會發生改變,這種數據就是可變類型

常見的可變類型:列表list、字典dict、集合set

3.1 list

python-logo

輸出結果:

3.2 dict

python-logo

輸出結果:

3.3 set

python-logo

輸出結果:

4. 不可變對象

💡 含義:變量對應的值不允許被修改,如果修改就會生成新的值從而分配新的內存空間

常見的可變類型:

  1. 數值類型:int, bool, float, complex

  2. 字符串:str

  3. 元組:tuple

❗ 注意:前面所說的深淺拷貝只針對可變對象,不可變對象是沒有這個說法的

4.1 數值類型

python-logo

輸出結果:

4.2 字符串

python-logo

輸出結果:

4.3 元組

python-logo

輸出結果:

導航連結:

目的地超連結
首頁返回主頁
Python學習Python學習
上一篇07 - 元組、字典、集合
下一篇09 - 函數基礎