CodeGym /Java Adesua /Python SELF TW /資料型別轉換

資料型別轉換

Python SELF TW
等級 5 , 課堂 2
開放

2.1 確定資料型別

有時我們不確定某個變數裡存的是什麼資料。為了搞清楚這個問題,Python 提供了一個 函式 type(),它可以用來確定物件的型別。

這是一個內建函式,會回傳指定物件的型別,這樣在進行 debug、資料驗證,或是寫需要依靠資料型別的邏輯時會非常有用。

type() 函式的運作原理

當你呼叫 type(x) 時,Python 會回傳一個特殊的 type 物件,這個物件表示變數 x 的型別。例如:


x = 1
print(type(x))  # 顯示: <class 'int'>

x = "你好"
print(type(x))  # 顯示: <class 'str'>

x = [1, 2, 3]
print(type(x))  # 顯示: <class 'list'>

注意,回傳的結果裡會有單字 "class",這是因為即使是像 int、str、list 這些型別,它們也是 class。 只是這些 class 是內建的,Python 已經幫我們準備好了。

實際應用場景

type() 函式常用於需要根據資料型別來執行不同邏輯的情境。

  • 可以根據變數型別執行對應的行為。
  • 在函式或方法中,確保傳入參數的型別正確。

如果你想確認某個變數裡的是數字,可以寫類似以下的程式碼:


arg = 123
if type(arg) == int:
    print(arg + 10)  # 顯示: 133               

再舉個更實用的案例,當我們想確認變數裡資料型別時:


arg = "123"
if type(arg) == int:
    print(arg + 10)  # 這行不會執行,因為 arg 是字串
elif type(arg) == str:
    print(arg + " world")  # 顯示: 123 world
else:
    print("未知的型別")               

2.2 明確指定型別

在 Python 中,明確指定物件的型別可以用型別轉換函式,例如 int()float()str()tuple(),以及其他函式。這些函式讓我們可以把某種型別的資料轉換成其他型別, 對處理使用者輸入、數學運算、處理字串或資料集合時相當有幫助。

型別轉換函式的範例

int(): 把資料轉成整數。這函式很常見,傳入一個數字字串就會轉成對應的整數。


num = int("123")  # num 會是整數 123               

float(): 同樣是很熟悉的函式,把資料轉成浮點數。


num = float("123.45")  # num 會是 123.45               

str(): 把任何 Python 物件轉成字串。


s = str(10.5)  # s 會是 '10.5'               

tuple(): 把序列轉成元組。


t = tuple([1, 2, 3])  # t 會是 (1, 2, 3)               

list(): 把可迭代物件(像是字串或元組)轉成列表。可迭代物件是指可以被一個一個遍歷的物件,例如字串、列表、元組。


l = list("abc")  # l 會是 ['a', 'b', 'c']               

dict(): 從鍵值對序列創建字典。


d = dict([(1, 'a'), (2, 'b')])  # d 會是 {1: 'a', 2: 'b'}

至於字典和元組,我們之後會詳細講,但希望這些範例能幫助你理解:當你需要特定型別時,可以放心使用上面提到的這些函式。

2.3 型別轉換

在 Python 中,明確型別轉換(也叫型別強制)允許開發者控制並更改變數的資料型別。這對於確保資料在不同操作中的相容性, 或修正來自使用者輸入或檔案中的資料型別特別有用。基本上,型別轉換和型別強制意思是一樣的,它們指的都是把資料型別轉成另一種型別的過程。

我們對明確型別強制應該已經有點了解了。在 Python 中,可以透過內建函式像是 int()float()str()tuple()list()dict()set() 等來操作。

讓我們再看幾個範例來理解:

函式 描述 輸入範例 輸出範例
int() 轉換成整數 int("10") 10
float() 轉換成浮點數 float("20.5") 20.5
str() 轉換成字串 str(15) "15"
tuple() 轉換成元組 tuple([1, 2, 3]) (1, 2, 3)
list() 轉換成列表 list("abc") ['a', 'b', 'c']
dict() 從鍵值對創建字典 dict([(1, 'one'), (2, 'two')]) {1: 'one', 2: 'two'}
set() 從列表創建集合 set([1, 1, 2, 2, 3, 3]) {1, 2, 3}

應用案例

明確型別強制在很多場景下都會出現,例如:

  • 處理使用者輸入: 確保輸入的資料是符合預期型別的。
  • 資料相容性: 當從不同來源或 API 得到的資料需要結合或比較時。
  • 錯誤處理: 在執行操作之前,先將資料轉成對應的型別以避免運行時錯誤。

最佳實踐與注意事項

明確型別轉換應謹慎使用,以免資料遺失(例如,轉換 floatint 時)或轉換失敗(例如,嘗試將非數字字串轉成數字)。

另外要記得,有些轉換可能會不太直觀,甚至得到意想不到的結果,因此需要特別注意資料檢查。 例如,intbool 之間的轉換可能會讓人有點摸不著頭緒 :)

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION