Day 2 變數與資料型別
引言
寫程式的過程中,變數與資料型別是處理資料的基礎。變數是存放資料的容器,資料型別則決定這筆資料有哪些特性、可以進行哪些操作。學會定義變數、認識各種資料型別,是學好 Python 的關鍵一步。
這篇文章會帶你了解 Python 中變數的觀念、如何定義變數,以及常見的資料型別,包括整數、浮點數、字串、布林值,還有串列、元組、字典與集合等容器型別。我們也會介紹變數的命名規則與撰寫風格建議,以及如何用 type() 檢查資料型別。
什麼是變數?如何在 Python 中定義變數
變數是在程式執行時用來存放資料的名稱。透過定義變數,我們可以給一筆資料一個名字,並在程式的其他地方用這個名字取用該筆資料。在 Python 中,變數不需要事先宣告型別,因為 Python 是動態型別語言,變數的型別由指定給它的值決定。
- 定義變數的基本語法
在 Python 中定義變數非常簡單,只要用賦值符號 = 把值指定給變數即可。例如:
x = 5 # 定義變數 x,並把整數 5 賦值給它 name = "Alice" # 定義變數 name,並把字串 "Alice" 賦值給它在這裡,x 是一個變數,被賦予整數 5;name 是另一個變數,被賦予字串 "Alice"。
- 變數的更新與覆寫
變數的值可以修改,也就是說,我們可以在程式的不同地方給同一個變數新的值。例如:
x = 10 # x 最初被賦予 10 x = 15 # x 的值現在被更新為 15這樣就能依照需求,在程式執行過程中靈活調整變數的值。
- Python 的動態型別系統
Python 和某些靜態型別語言不同,定義變數時不需要宣告型別。賦值時,Python 會根據值自動判斷變數的型別。例如:
x = 5 # x 是整數 x = 3.14 # x 變成浮點數 x = "Hi" # x 變成字串同一個變數在程式執行過程中可以存放不同型別的值,這是 Python 的彈性之一。
常見資料型別
在 Python 中,資料型別決定我們可以對變數進行哪些操作。理解常見的資料型別,是學會用 Python 處理各種資料的基礎。以下先介紹幾個基本的資料型別。
整數(int)
整數是不帶小數點的數字,可以是正數、負數或零。Python 可以處理非常大的整數,只要電腦的記憶體足夠,就沒有限制。
age = 25 # 定義整數變數 age
negative_number = -10 # 定義負整數
浮點數(float)
浮點數是帶有小數點的數字,用來表示非整數的數值。Python 中的浮點數通常對應數學上的實數,例如 3.14、-0.001 等。
pi = 3.14159 # 定義浮點數變數 pi
temperature = -5.5 # 定義負的浮點數
浮點數常用於涉及分數或小數的運算,特別是在科學計算與工程應用中。
字串(str)
字串是一連串字元組成的資料,通常用來表示文字。Python 的字串可以用單引號或雙引號定義,兩種寫法效果相同。
name = "Alice" # 使用雙引號定義字串
greeting = 'Hello, world!' # 使用單引號定義字串
字串可以進行多種操作,包括串接、重複和索引。
字串的串接
first_name = "John"
last_name = "Doe"
full_name = first_name + " " + last_name # 用 + 串接字串
print(full_name) # 輸出:John Doe
重複字串
repeat_str = "ha" * 3 # 重複字串 3 次
print(repeat_str) # 輸出:hahaha
字串索引與切片
字串中的每個字元都有一個索引值,從 0 開始計算。可以透過索引取得特定字元,也可以用切片取出字串的一部分。
name = "Python"
print(name[0]) # 輸出:P
print(name[-1]) # 輸出:n(負索引表示從後面數回來)
print(name[1:4]) # 輸出:yth(從索引 1 開始,取到索引 4 之前)
布林值(bool)
布林值只有兩種可能的值:True(真)與 False(假)。這種資料型別在條件判斷與邏輯運算中非常重要。
is_python_fun = True
is_sun_hot = True
is_raining = False
布林值通常用在條件判斷中,幫助程式做出決定。
is_adult = True
if is_adult:
print("You are an adult.")
else:
print("You are not an adult.")
容器型別
在 Python 中,容器型別用來存放與操作多筆資料。它們比單一數值更靈活,可以輕鬆進行資料的新增、查詢與修改。常見的容器型別有串列(list)、元組(tuple)、字典(dict)與集合(set),每種各有特點,適合不同情境。
以下分別介紹這些容器型別的特點、操作方法與實際應用情境。
串列(list)
串列的特點
串列(list)是 Python 中最常用的容器型別之一,用來存放一組有序的元素。串列內的元素可以是任意型別,而且串列是可變的,可以修改、新增或刪除元素。串列使用方括號 [] 定義,元素之間以逗號分隔。
範例:
fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4, 5]
mixed_list = [1, "hello", 3.14, True]
串列的操作
Python 提供豐富的操作來處理串列,包括新增、刪除、查詢與修改元素。
存取元素:可以透過索引存取串列中的元素,索引從 0 開始。
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # 輸出 "apple"
修改元素:可以透過索引直接修改串列中的元素。
fruits[1] = "orange"
print(fruits) # 輸出 ['apple', 'orange', 'cherry']
新增元素:使用 append() 可以把新元素加到串列尾端,或用 insert() 把元素插入指定位置。
fruits.append("grape") # 把元素加到串列尾端
fruits.insert(1, "blueberry") # 在索引 1 的位置插入元素
print(fruits) # 輸出 ['apple', 'blueberry', 'orange', 'cherry', 'grape']
刪除元素:可以用 remove() 刪除指定元素,或用 pop() 刪除特定位置的元素。
fruits.remove("orange") # 刪除 "orange"
fruits.pop(0) # 刪除索引 0 的元素
print(fruits) # 輸出 ['blueberry', 'cherry', 'grape']
串列長度:使用 len() 函式可以取得串列的元素個數。
print(len(fruits)) # 輸出 3
串列切片:可以使用切片取得串列的一部分。
print(fruits[1:3]) # 輸出 ['cherry', 'grape']
串列應用情境
串列非常有彈性,適合存放與操作多筆相關資料。例如,可以用串列存放學生姓名、一組數字或不同類型的物品。串列也很容易和迴圈(例如 for 迴圈)搭配,逐筆處理資料。
元組(tuple)
元組的特點
元組(tuple)和串列類似,也是有序的元素集合,可以包含不同型別的元素。差別在於元組是不可變的,一旦建立就無法修改內容。元組使用小括號 () 定義。
範例:
coordinates = (10.0, 20.0)
person_info = ("Alice", 25, "New York")
元組中的元素可以透過索引存取,但無法修改或刪除。
元組的操作
存取元素:透過索引存取元組中的元素。
print(coordinates[0]) # 輸出 10.0
長度:使用 len() 函式取得元組長度。
print(len(coordinates)) # 輸出 2
切片:元組也支援切片操作。
print(person_info[0:2]) # 輸出 ('Alice', 25)
元組不可變的特性,讓它在某些情況下更安全,因為內容不會被意外修改。
元組應用情境
元組的不可變性讓它特別適合存放不應該被修改的資料,例如座標、設定值,或作為字典的鍵。由於元組不可變,Python 也能對它進行一些最佳化,因此元組的操作速度通常比串列快。
字典(dict)
字典的特點
字典(dict)用來存放鍵值對(key-value pair),每個鍵都是唯一的,並對應到一個值。字典使用花括號 {} 定義,鍵與值之間用冒號 : 分隔,各組鍵值對之間用逗號分隔。從 Python 3.7 開始,字典會保留插入順序。
範例:
person = {
"name": "Alice",
"age": 25,
"city": "New York"
}
在這個例子中,"name" 是一個鍵,對應的值是 "Alice";"age" 是另一個鍵,對應的值是 25。
字典的操作
存取值:可以透過鍵存取字典中的值。
print(person["name"]) # 輸出 "Alice"
修改值:可以透過鍵修改字典中的值。
person["age"] = 30
print(person["age"]) # 輸出 30
新增鍵值對:可以直接指定新的鍵值對。
person["email"] = "alice@example.com"
print(person) # 輸出新增後的字典
刪除鍵值對:可以使用 del 關鍵字刪除指定的鍵值對。
del person["city"]
print(person) # 輸出刪除 "city" 後的字典
取得所有鍵:使用 keys() 方法取得字典中的所有鍵。
print(person.keys()) # 輸出 dict_keys(['name', 'age', 'email'])
取得所有值:使用 values() 方法取得字典中的所有值。
print(person.values()) # 輸出 dict_values(['Alice', 30, 'alice@example.com'])
字典長度:使用 len() 函式取得字典中鍵值對的數量。
print(len(person)) # 輸出 3
字典應用情境
字典在存放與查詢資料上非常有效率,特別適合用來儲存需要快速查找的鍵值對資料,例如使用者資料、設定值,或其他透過鍵找值的結構。在實際開發中,字典經常被用來實現對應與查詢功能。
集合(set)
集合的特點
集合(set)是無序、不含重複元素的容器。集合內的元素必須是可雜湊(hashable)的物件,例如整數、字串、元組;集合本身是可變的,可以新增或刪除元素。集合使用花括號 {} 定義,寫法和字典類似,但集合只存放元素,沒有鍵值對。
範例:
numbers = {1, 2, 3, 4, 5}
集合中的每個元素都是唯一的,重複的元素會自動去除。
範例:
duplicates = {1, 2, 2, 3, 4, 4, 5}
print(duplicates) # 輸出 {1, 2, 3, 4, 5}
集合的操作
新增元素:使用 add() 方法可以新增元素。
numbers.add(6)
print(numbers) # 輸出 {1, 2, 3, 4, 5, 6}
刪除元素:使用 remove() 或 discard() 方法可以刪除集合中的元素。
numbers.remove(3)
print(numbers) # 輸出 {1, 2, 4, 5, 6}
集合運算:集合支援常見的數學集合運算,例如聯集、交集與差集。
聯集(union):回傳兩個集合中所有不重複的元素。
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # 輸出 {1, 2, 3, 4, 5}
交集(intersection):回傳兩個集合中都存在的元素。
print(a & b) # 輸出 {3}
差集(difference):回傳只存在於其中一個集合的元素。
print(a - b) # 輸出 {1, 2}
檢查元素是否存在:可以使用 in 運算子檢查元素是否在集合中。
print(1 in numbers) # 輸出 True
print(7 in numbers) # 輸出 False
集合應用情境
集合適合需要去除重複資料的情境。例如,可以用集合存放資料集中唯一的元素,或找出兩組資料的共同元素與差異。在處理大量資料時,集合的查找與比較操作通常比串列更有效率。
小結語
Python 的容器型別提供豐富的工具來處理各種資料結構需求。串列是靈活的有序集合,適合經常修改的資料;元組是不可變的有序集合,適合存放固定資料;字典是高效的鍵值對集合,適合快速查找;集合則是無序、去重的資料集合,適合集合運算與去重。
| 型別 | 語法 | 可變 | 順序 | 適合情境 |
|---|---|---|---|---|
| 串列 list | [1, 2, 3] | 可變 | 有序 | 需要經常新增、修改、刪除的元素集合 |
| 元組 tuple | (1, 2, 3) | 不可變 | 有序 | 不該被修改的固定資料,例如座標、設定值 |
| 字典 dict | {"key": "value"} | 可變 | 有序(3.7 版起保留插入順序) | 需要用鍵快速查值的資料 |
| 集合 set | {1, 2, 3} | 可變 | 無序 | 去重與集合運算 |
了解這些容器型別的特性與使用情境,可以幫助你在寫 Python 時選對資料結構,讓程式更有效率、也更好讀。在日常開發中,這些容器能大幅簡化資料處理流程,讓程式碼更簡潔明確。
變數命名規則與風格建議
為了讓程式碼更容易閱讀,Python 有一套變數命名的規則與風格建議:
- 變數名稱只能包含字母、數字與底線,而且不能以數字開頭。例如 name_1 是合法名稱,1_name 則不合法。
- 變數名稱區分大小寫,age 和 Age 是兩個不同的變數。
- 使用能描述用途的名稱:變數名稱應該清楚表達用途。例如 count 比 c 更好,因為它更具描述性。
- 遵循 Python 命名風格:Python 變數一般使用蛇形命名法(snake_case),也就是用底線分隔單字。例如 student_name 是良好的變數名稱。
type() 函式檢查資料型別
有時我們需要檢查變數的資料型別,確認是否符合預期。Python 提供內建函式 type(),可以用來檢查變數的型別。
x = 10
print(type(x)) # 輸出:<class 'int'>
name = "Alice"
print(type(name)) # 輸出:<class 'str'>
type() 函式在除錯和檢查變數型別時非常有用。
結語
理解變數與資料型別是掌握 Python 的關鍵。透過今天的文章,你已經學會如何定義變數,也認識了 Python 常見的資料型別,包括整數、浮點數、字串、布林值,以及串列、元組、字典與集合。掌握這些基礎,能幫助你在接下來的學習中處理更複雜的資料結構與邏輯。
明天,我們會進一步探討 Python 的運算子與邏輯運算,並學習如何用條件判斷讓程式做決定。
留言
張貼留言