Python - 類型轉換

你好,未來的 Python 魔術師們!今天,我們將進入 Python 中類型轉換的精彩世界。如果你從未聽過這個術語,也別擔心——在這篇教程結束時,你將能像專家一樣進行類型轉換!

Python - Type Casting

什麼是類型轉換?

在我們深入之前,先來個簡單的類比。想像你有一盒樂高積木,有些是圓形的,有些是方形的,甚至還有些是星形的。類型轉換就像使用魔杖將一個形狀變成另一個形狀。在 Python 中,我們做的是同樣的事,不過轉換的是數據類型而不是樂高形狀!

Python 隱式轉換

Python 非常聰明。有時它會在你不要求的情况下自動將一個數據類型轉換為另一個。這稱為隱式轉換。

讓我們看一個例子:

x = 5    # 這是一個整數
y = 2.0  # 這是一個浮點數
z = x + y

print(z)
print(type(z))

如果你運行這段代碼,你會看到:

7.0
<class 'float'>

哇!Python 在我們將 x 加到 y 上時自動將整數 x 轉換為浮點數。就像 Python 戴上了思考帽並說:“嗯,我不能直接將整數和浮點數相加,所以我先將整數轉換為浮點數!”

Python 顯式轉換

現在,如果我們想成為老闆,告訴 Python 我們想要的精確類型是什麼呢?這就是顯式轉換的用處。這就像我們故意使用魔杖來轉換數據。

Python 提供了幾個內建函數用於此目的。讓我們看看最常見的一些:

Python int() 函數

int() 函數將值轉換為整數。讓我們看看它是如何工作的:

a = int(3.14)
b = int("42")
c = int(True)

print(a, type(a))
print(b, type(b))
print(c, type(c))

輸出:

3 <class 'int'>
42 <class 'int'>
1 <class 'int'>

如你所見,int() 可以將浮點數、字符串(如果它們表示有效的整數)甚至布爾值轉換為整數。這就像變形金剛,但對於數字來說!

Python float() 函數

float() 函數是我們轉換值為浮點數的首選:

x = float(5)
y = float("3.14")
z = float("inf")

print(x, type(x))
print(y, type(y))
print(z, type(z))

輸出:

5.0 <class 'float'>
3.14 <class 'float'>
inf <class 'float'>

看那!我們將整數、字符串甚至無窮大的概念轉換成了浮點數。這就像將固體樂高積木變成了水——它們現在可以流動並有小數點!

Python str() 函數

最後但同樣重要的是 str() 函數。這個函數就像故事 teller——它可以把 almost 任何東西變成字符串:

a = str(42)
b = str(3.14)
c = str(True)
d = str([1, 2, 3])

print(a, type(a))
print(b, type(b))
print(c, type(c))
print(d, type(d))

輸出:

42 <class 'str'>
3.14 <class 'str'>
True <class 'str'>
[1, 2, 3] <class 'str'>

驚人!我們將數字、布爾值甚至列表變成了字符串。就像 str() 函數是位大師畫家,繪製我們給它的任何東西的畫像!

序列類型的轉換

現在,讓我們談談在不同序列類型之間的轉換。Python 有幾個內建的序列類型,如列表、元組和集合。我們可以使用它們各自的函數在這些類型之間進行轉換:

# 將列表轉換為元組
my_list = [1, 2, 3, 4, 5]
my_tuple = tuple(my_list)
print(my_tuple, type(my_tuple))

# 將元組轉換為集合
my_set = set(my_tuple)
print(my_set, type(my_set))

# 將集合再次轉換回列表
back_to_list = list(my_set)
print(back_to_list, type(back_to_list))

輸出:

(1, 2, 3, 4, 5) <class 'tuple'>
{1, 2, 3, 4, 5} <class 'set'>
[1, 2, 3, 4, 5] <class 'list'>

這就像我們在數據之間玩音樂椅遊戲,把它從一個類型移到另一個類型!

數據類型轉換函數

讓我們把我們學過的所有類型轉換函數總結在一個方便的表格中:

函數 描述 示例
int() 轉換為整數 int("42") → 42
float() 轉換為浮點數 float("3.14") → 3.14
str() 轉換為字符串 str(42) → "42"
bool() 轉換為布爾值 bool(1) → True
list() 轉換為列表 list((1, 2, 3)) → [1, 2, 3]
tuple() 轉換為元組 tuple([1, 2, 3]) → (1, 2, 3)
set() 轉換為集合 set([1, 2, 2, 3]) → {1, 2, 3}

記住,這些函數就像你在 Python 中的瑞士軍刀——它們非常多功能,可以幫助你從許多棘手的情況中脫身!

就是這樣,各位!我們穿越了 Python 類型轉換的領域,從隱式轉換到顯式轉換。我們看到了 Python 如何自動為我們更改類型,以及如何我們可以控制並自行更改類型。

記住,類型轉換是你 Python 工具箱中的一個強大工具。它允許你塑造數據以適應你的需求,就像雕塑家將粘土塑造為美麗的雕塑一樣。經過練習,你將會在這裡花費很少的時間成為一個類型轉換的專家!

所以,前進吧,年輕的 Pythonistias,並且轉換吧!並永遠記住——在 Python 的世界裡,每個類型都有其位置,但有了轉換的力量,沒有類型是 set in stone. Happy coding!

Credits: Image by storyset