一文徹底講清Python的內置數據類型,從數位、字串到字典
更新于:2025-03-26 08:48:32

介紹

Python 是一種動態類型語言,這意味著變數的類型是根據它所保存的值自動確定的。要編寫高效且無錯誤的代碼,瞭解 Python 提供的各種內置數據類型至關重要。這些數據類型構成了 Python 程式設計的基礎,並且幾乎用於每個 Python 應用程式。

Python 的內置數據類型可以大致分為幾組:

  • 數字類型(例如intfloatcomplex
  • 序列類型(例如listtuplerange
  • 文字類型(例如str
  • 映射類型(例如dict
  • 集合類型(例如setfrozenset
  • 布爾類型(例如bool
  • 二進位類型(例如bytesbytearraymemoryview

數字數據類型

P ython 提供了三種不同的數值數據類型: intfloatcomplex 。這些類型用於表示數位並執行各種數學運算。

1. 整數(int)

int類型用於表示整數,包括正數、負數以及零。 Python的int類型是無界的,這意味著只要有足夠的記憶體,它就可以表示任意大的數位。

x = 42# Positive integery = -15# Negative integerz = 0# Zeroprint(type(x))# Output:

在此示例中, xyz均為整數。 Python 可以毫不費力地處理非常大的整數:

large_number = 10**100# A very large integerprint(large_number)

2. 浮點數(float)

float類型表示帶小數點的實數。這些數位也可以用科學計數法來表示。 Python 使用雙精度(64 位)來存儲浮點數。

a = 3.14# Floating-point numberb = -0.001# Negative floatc = 1.5e3# Scientific notation for 1500.0print(type(a))# Output:

在此示例中, abc是浮點數。 float類型對於表示需要精度的值非常有用,例如測量或財務計算。

3. 複數(complex)

Python 還支持複數,即a + bj形式的數位,其中a是實部, b是虛部。複數在科學和工程計算中特別有用。

c1 = 2 + 3j# Complex number with real part 2 and imaginary part 3c2 = -1j# Complex number with only an imaginary partprint(c1.real)# Output: 2.0 (real part of c1)print(c1.imag)# Output: 3.0 (imaginary part of c1)print(type(c1))# Output:

在此示例中, c1c2是複數。您可以使用.real.imag屬性訪問實部和虛部。

數值數據類型摘要:

  • 整數 (int) :整數,大小不受限制。
  • 浮點數 (float) :帶有小數點或科學記數法的數位。
  • 複數(complex :具有實部和虛部的數位,在專業領域很有用。

序列數據類型

Python 提供了幾種內置的序列數據類型,允許您以有序的方式存儲和管理專案集合。最常見的序列類型是listtuplerange 。序列類型支援索引、切片和反覆運算等操作。

1. 清單(list)

list數據類型是可變序列,這意味著您可以在建立清單後更改、添加或刪除元素。清單用途廣泛,可以容納不同類型的專案,包括其他清單。

fruits = ["apple", "banana", "cherry"]numbers = [1, 2, 3, 4, 5]mixed = [1, "apple", 3.14, True]print(fruits[0])# Output: applefruits[1] = "orange"# Modifying the listprint(fruits)# Output: ['apple', 'orange', 'cherry']

在此示例中,清單fruits包含字串元素,但清單也可以包含數位、布爾值,甚至是混合類型,如mixed中所示。修改清單的能力使它們成為動態更改集合的絕佳工具。

清單的常見操作:

  • 添加專案list.append(item)list.insert(index, item)
  • 刪除專案list.remove(item)list.pop(index)
  • 切片:使用list[start:end]提取子集
fruits.append("grape")print(fruits)# Output: ['apple', 'orange', 'cherry', 'grape']

2. 元組(tuple)

tuple是不可變的序列,這意味著一旦創建,其元素就無法修改。當您想要對在整個程式中不應更改的項目進行分組時,元組非常有用。

coordinates = (10, 20)person = ("John", 25, "Engineer")print(coordinates[0])# Output: 10

在此示例中, coordinates組包含兩個元素。元組通常用於存儲相關但不可更改的數據,例如座標或記錄。

為什麼使用元組?

  • 不變性:由於元組是不可變的,因此它們具有更高的記憶體效率,並且可以用作字典中的鍵(與清單不同)。
  • 打包和拆包:元組允許輕鬆分配和交換變數。
x, y = coordinates# Unpacking the tupleprint(x, y)# Output: 10 20

3. 範圍(range)

range類型表示數位序列,通常用於迴圈特定次數。 range物件具有記憶體效率高,因為它不會將數位存儲在記憶體中,而是動態生成它們。

r = range(5)# Creates a range from 0 to 4 (5 is excluded)print(list(r))# Output: [0, 1, 2, 3, 4]

還可以指定開始、停止和步驟以進行更多控制:

r = range(1, 10, 2)# Creates a range from 1 to 9, stepping by 2print(list(r))# Output: [1, 3, 5, 7, 9]

範圍經常用在for迴圈中:

for i in range(3):print(i)# Output: 0 1 2

序列數據類型總結:

  • 清單 (list) :可變的、有序的專案集合。可以添加、刪除或更改元素。
  • 元組 (tuple) :不可變的、有序的專案集合。非常適合不應更改的數據。
  • 範圍(range :高效表示數位序列,常用於迴圈中。

這些序列類型中的每一種都提供獨特的優勢,具體取決於您是否需要可變性或效率。清單非常適合動態數據,而元組更適合不會更改的固定數據。

文字數據類型

在Python中,用於表示文本的主要數據類型是str (字串)類型。字串是 Unicode 字元序列,因此可用於存儲和操作文本數據,包括單詞、句子,甚至大量文本。

1. 字串(str)

Python 中的字串是用單引號 ( ' ) 或雙引號 ( " ) 括起來的字元序列。字串是不可變的,這意味 著一旦創建,就無法修改。如果需要更改字串,則必須創建新字串一。

greeting = "Hello, World!"name = 'John Doe'print(type(greeting))# Output:

還可以對多行字串使用三引號( '''""" ):

message = """This is a multi-line string.You can write across multiple lines."""print(message)

2. 常用字串操作

儘管字串是不可變的,但 Python 提供了多種操作字串和生成新字串的方法。

  • 連接:您可以使用+運算子組合字串。
first_name = "John"last_name = "Doe"full_name = first_name + " " + last_nameprint(full_name)# Output: John Doe
  • 重複:使用*運算子多次重複字串。
repeat = "Hello! " * 3print(repeat)# Output: Hello! Hello! Hello!
  • 切片:您可以使用切片提取字串的一部分。
text = "Python Programming"print(text[0:6])# Output: Pythonprint(text[-11:])# Output: Programming
  • 長度len()函數返回字串中的字元數。
print(len(text))# Output: 18

3. 字串方法

Python 提供了多種內置的字串方法來操作和處理字串。以下是一些常用的字串方法:

  • upper() :將字串轉換為大寫。
text = "hello"print(text.upper())# Output: HELLO
  • lower() :將字串轉換為小寫。
text = "HELLO"print(text.lower())# Output: hello
  • strip() :刪除任何前導和尾隨空格。
text = "hello"print(text.strip())# Output: hello
  • replace() :用另一個子字串替換出現的子字串。
text = "Python is fun"print(text.replace("fun", "awesome"))# Output: Python is awesome
  • split() :根據分隔符將字串拆分為清單。
text = "apple, banana, cherry"fruits = text.split(", ")print(fruits)# Output: ['apple', 'banana', 'cherry']
  • join() :使用指定的分隔符將清單的元素連接成字串。
fruits = ['apple', 'banana', 'cherry']result = ", ".join(fruits)print(result)# Output: apple, banana, cherry

4. 字串格式化

Python 提供了強大的字串格式化方法,例如 f 字串,它允許您將表示式嵌入到字串文字中。 F 字串從 Python 3.6 開始可用。

使用 f 字串的範例:

name = "Alice"age = 30intro = f"My name is {name} and I am {age} years old."print(intro)# Output: My name is Alice and I am 30 years old.

此方法提供了一種更具可讀性和更有效的方式來在字串中嵌入變數和表達式。

文字數據類型總結:

  • 字符串 (str) :用於存儲和操作文本數據的不可變字元序列。
  • 常見操作:字串連接、切片、重複、求長度。
  • 字串方法:包括upper()replace()split()等操作來轉換或處理字串。
  • 字串格式化:使用 f-string 輕鬆將變數和表示式嵌入到字串中。

str類型是 Python 中處理文字的基礎。瞭解如何有效地操作和格式化字串對於在程式中處理基於文本的數據至關重要。

映射數據類型

在Python中,主要的內置映射數據類型是dict (字典)。字典是鍵值對的無序集合,其中每個鍵必須是唯一且不可變的,而值可以是任何類型。字典對於基於唯一鍵存儲和檢索數據非常有效。

1. 字典(dict)

字典是使用大括號{}和一系列鍵值對創建的,其中每個鍵與其值之間用冒號:分隔。您還可以使用dict()構造函數創建字典。

person = {"name": "Alice","age": 30,"job": "Engineer"}print(person["name"])# Output: Aliceprint(person.get("age"))# Output: 30

在此示例中,字典person使用鍵"name""age""job"存儲有關個人的資訊。可以通過引用該鍵來訪問與每個鍵關聯的值。

2. 添加、修改和刪除元素

字典是可變的,這意味著您可以在創建字典后添加、更改或刪除鍵值對。

  • 添加新的鍵值對
person["city"] = "New York"print(person)# Output: {'name': 'Alice', 'age': 30, 'job': 'Engineer', 'city': 'New York'}
  • 修改現有值
person["age"] = 31print(person["age"])# Output: 31
  • 刪除鍵值對
person.pop("job")print(person)# Output: {'name': 'Alice', 'age': 31, 'city': 'New York'}

還可以使用del關鍵字來刪除鍵值對:

del person["city"]print(person)# Output: {'name': 'Alice', 'age': 31}

3. 字典方法

字典提供了許多管理鍵值對的有用方法。一些最常見的方法包括:

  • keys() :返回字典中所有鍵的類似清單的物件。
print(person.keys())# Output: dict_keys(['name', 'age'])
  • values() :返回所有值的類似清單的物件。
print(person.values())# Output: dict_values(['Alice', 31])
  • items() :以元組形式返回所有鍵值對的類似清單的物件。
print(person.items())# Output: dict_items([('name', 'Alice'), ('age', 31)])
  • update() :使用另一個字典或反覆運算器中的鍵值對更新字典。
new_data = {"job": "Designer", "city": "San Francisco"}person.update(new_data)print(person)# Output: {'name': 'Alice', 'age': 31, 'job': 'Designer', 'city': 'San Francisco'}

4. 使用字典作為查找表

字典通常用作查找表,因為它們允許您快速查找與特定鍵關聯的值。當您需要有效地存儲和檢索數據時,這特別有用。

prices = {"apple": 0.99,"banana": 0.50,"cherry": 2.50}print(prices["apple"])# Output: 0.99

在這裡,字典prices充當查找表,可以根據商品名稱快速查找商品的價格。

5. 字典推導式

與清單推導式類似,您可以使用字典推導式以簡潔且可讀的方式創建字典。

squares = {x: x**2 for x in range(5)}print(squares)# Output: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

此示例生成一個字典,其中鍵是從04的數位,值是它們的平方。

映射數據類型總結:

  • 字典 (dict) :鍵值對的無序集合。鍵必須是唯一且不可變的,而值可以是任何類型。
  • Mutable :創建字典后可以添加、修改和刪除元素。
  • 高效查找:字典非常適合需要基於唯一鍵進行快速查找的情況。
  • 字典方法:有用的方法包括keys()values()items()update()

字典是 Python 中最強大、最靈活的數據類型之一,這使得它們對於高效的數據組織和檢索至關重要。

集合數據類型

在 Python 中,集合是無序、唯一元素的集合。 Python 提供兩種類型的集合: setfrozenset 。當您需要存儲不重複的項目或執行數學集合運算(例如並集、交集和差集)時,集特別有用。

1. 集合(set)

set是不可變物件的無序集合。但是,集合本身是可變的,這意味著您可以在創建集合後添加或刪除元素。由於集合是無序的,因此它們不支援像清單或元組那樣的索引或切片。

fruits = {"apple", "banana", "cherry"}print(fruits)# Output: {'apple', 'banana', 'cherry'}# Adding an elementfruits.add("orange")print(fruits)# Output: {'apple', 'banana', 'cherry', 'orange'}# Removing an elementfruits.remove("banana")print(fruits)# Output: {'apple', 'cherry', 'orange'}

在此示例中,集合fruits包含三個獨特的元素。 .add()方法允許我們添加新元素, .remove()方法允許我們刪除元素。

集合的性質:

  • 唯一元素:設置自動丟棄重複值。
  • 無序:集合中的元素沒有定義的順序,並且每次列印或訪問集合時順序都可能更改。
  • 可變:您可以新增或刪除元素。

重要的設置操作:

集合支援許多數學集合運算,例如並、交、差和對稱差。

  • Union :組合兩個集合中的所有唯一元素。
set1 = {1, 2, 3}set2 = {3, 4, 5}union_set = set1.union(set2)print(union_set)# Output: {1, 2, 3, 4, 5}
  • 交集:僅返回兩個集合共有的元素。
intersection_set = set1.intersection(set2)print(intersection_set)# Output: {3}
  • 差異:返回一個集合中但不在另一個集合中的元素。
difference_set = set1.difference(set2)print(difference_set)# Output: {1, 2}
  • 對稱差異:返回任一集合中的元素,但不返回兩個集合中的元素。
symmetric_difference_set = set1.symmetric_difference(set2)print(symmetric_difference_set)# Output: {1, 2, 4, 5}

2.冰凍集合(frozenset)

frozenset是集合的不可變版本。一旦創建,就無法修改其元素(即無法添加或刪除元素)。但是,與集合一樣, frozenset支援所有標準集合運算,例如並集、交集和差集。

例子:

frozen_fruits = frozenset(["apple", "banana", "cherry"])print(frozen_fruits)# Output: frozenset({'apple', 'banana', 'cherry'})# You cannot modify a frozenset, but you can perform set operationsset_a = frozenset([1, 2, 3])set_b = frozenset([3, 4, 5])print(set_a.intersection(set_b))# Output: frozenset({3})

何時使用frozenset

  • 不可變需求:當您需要一個在創建後無法更改的集合時(例如,用作字典鍵或確保該集合在整個程式中保持不變)。
  • 性能:由於不變性, frozenset比常規集合具有輕微的性能優勢,特別是在頻繁訪問集合的情況下。

3. 常用的集合方法

setfrozenset都支持多種內置方法來執行操作和查詢數據。

  • add() (僅限集合):向集合添加一個元素。
my_set = {1, 2, 3}my_set.add(4)print(my_set)# Output: {1, 2, 3, 4}
  • remove() (僅限集合):從集合中刪除一個元素。
my_set.remove(2)print(my_set)# Output: {1, 3, 4}
  • union() :組合兩個集合中的所有唯一元素。
set1 = {1, 2, 3}set2 = {3, 4, 5}print(set1.union(set2))# Output: {1, 2, 3, 4, 5}
  • intersection() :僅返回兩個集合共有的元素。
print(set1.intersection(set2))# Output: {3}
  • difference() :返回一組中的元素,但不返回另一組中的元素。
print(set1.difference(set2))# Output: {1, 2}
  • symmetric_difference() :返回任一集合中但不在兩個集合中的元素。
print(set1.symmetric_difference(set2))# Output: {1, 2, 4, 5}

集合數據類型總結:

  • 集合 (set) :唯一的、可變元素的無序集合。非常適合存儲不允許重複且需要集合操作的集合。
  • 凍結集(frozenset :不可變集,支援集合操作,但創建後無法修改。
  • 集合運算:並、交、差和對稱差是處理集合的強大工具。

集合對於管理唯一項的集合和執行基於集合的操作非常有效,而frozenset在需要時提供不變性。

布爾數據類型

在 Python 中,布爾數據類型 ( bool ) 表示兩個可能值之一: TrueFalse 。這些值通常用在條件和控制流中來管理程序邏輯。布爾值是比較運算、決策和循環結構的重要組成部分。

1.布爾值(bool)

bool數據類型只有兩個可能的值:

  • True
  • False

Python 將TrueFalse視為整數的特殊情況,其中True相當於1False相當於0 。然而,布爾值最常用於邏輯運算,而不是算術運算。

is_active = Trueis_valid = Falseprint(is_active)# Output: Trueprint(is_valid) # Output: False

2. 布爾表達式

布爾值通常是比較或邏輯表達式的結果。返回布爾值的一些常見運算符是:

  • 比較運算子==!=<<=>=
  • 邏輯運算子andornot

比較運算符示例:

a = 10b = 20print(a == b)# Output: False (10 is not equal to 20)print(a < b) # Output: True (10 is less than 20)

在此示例中,比較運算子用於評估ab之間的關係,返回布爾值( TrueFalse )。

邏輯運算符示例:

x = Truey = Falseprint(x and y)# Output: False (both must be True for 'and' to return True)print(x or y) # Output: True (only one needs to be True for 'or' to return True)print(not x)# Output: False (not inverts the boolean value)
  • and :如果兩個操作數均為True則返回True ;否則,它返回False
  • or :如果至少一個操作數為True則返回True ;否則,它返回False
  • not :反轉布爾值,將True變為False ,反之亦然。

3.其他數據類型的布爾值

在 Python 中,許多數據類型都有隱式布爾值。這在ifwhile等條件語句中特別有用。以下值在 Python 中被視為False

  • None
  • 0 (整數或浮點數)
  • '' (空字串)
  • [] (空清單)
  • {} (空字典)
  • set() (空集)
  • False

其他一切都被認為是True

print(bool(0))# Output: False (zero is treated as False)print(bool("")) # Output: False (empty string is False)print(bool([1, 2])) # Output: True (non-empty list is True)print(bool(None)) # Output: False

這種行為在編寫條件邏輯時非常有用,因為 Python 會自動將表達式轉換為其布爾等價物。

4. 控制結構中的布爾上下文

布爾值是 Python 中控制流的基礎。它們幫助確定ifelseelifwhilefor語句中代碼塊的執行。

if語句示例:

age = 18if age >= 18:print("You are an adult.")# This block executes because the condition is Trueelse:print("You are a minor.")

在此示例中, if語句評估age >= 18是否為True 。如果是,則運行第一個代碼塊;否則,運行else塊。

while迴圈示例:

count = 0while count < 5:print(count)count += 1

在此while迴圈中,在每次反覆運算之前都會評估條件count < 5 。只要條件為True ,迴圈就會繼續執行。

布爾數據類型總結:

  • 布爾值 (bool) :表示兩個值之一: TrueFalse
  • 比較和邏輯運算符:返回布爾值以評估條件。
  • 隱式布爾值:某些值(如0None 、空集合和False被視為False ,而非空物件和非零數字被視為True
  • 控制流程:布爾值對於通過ifelseelifwhilefor語句控制程式流程至關重要。

布爾值是程式設計邏輯的基礎,允許您根據條件做出決策並控制代碼的行為。