
- Python 基礎
- Python - 首頁
- Python - 概述
- Python - 歷史
- Python - 特性
- Python vs C++
- Python - Hello World 程式
- Python - 應用領域
- Python - 直譯器
- Python - 環境搭建
- Python - 虛擬環境
- Python - 基本語法
- Python - 變數
- Python - 資料型別
- Python - 型別轉換
- Python - Unicode 系統
- Python - 字面量
- Python - 運算子
- Python - 算術運算子
- Python - 比較運算子
- Python - 賦值運算子
- Python - 邏輯運算子
- Python - 位運算子
- Python - 成員運算子
- Python - 身份運算子
- Python - 運算子優先順序
- Python - 註釋
- Python - 使用者輸入
- Python - 數字
- Python - 布林值
- Python 控制語句
- Python - 控制流
- Python - 決策
- Python - if 語句
- Python - if else
- Python - 巢狀 if
- Python - match-case 語句
- Python - 迴圈
- Python - for 迴圈
- Python - for-else 迴圈
- Python - while 迴圈
- Python - break 語句
- Python - continue 語句
- Python - pass 語句
- Python - 巢狀迴圈
- Python 函式與模組
- Python - 函式
- Python - 預設引數
- Python - 關鍵字引數
- Python - 僅限關鍵字引數
- Python - 位置引數
- Python - 僅限位置引數
- Python - 可變引數
- Python - 變數作用域
- Python - 函式註解
- Python - 模組
- Python - 內建函式
- Python 字串
- Python - 字串
- Python - 字串切片
- Python - 修改字串
- Python - 字串連線
- Python - 字串格式化
- Python - 跳脫字元
- Python - 字串方法
- Python - 字串練習
- Python 列表
- Python - 列表
- Python - 訪問列表元素
- Python - 修改列表元素
- Python - 新增列表元素
- Python - 刪除列表元素
- Python - 遍歷列表
- Python - 列表推導式
- Python - 排序列表
- Python - 複製列表
- Python - 合併列表
- Python - 列表方法
- Python - 列表練習
- Python 元組
- Python - 元組
- Python - 訪問元組元素
- Python - 更新元組
- Python - 解包元組
- Python - 遍歷元組
- Python - 合併元組
- Python - 元組方法
- Python - 元組練習
- Python 集合
- Python - 集合
- Python - 訪問集合元素
- Python - 新增集合元素
- Python - 刪除集合元素
- Python - 遍歷集合
- Python - 合併集合
- Python - 複製集合
- Python - 集合運算子
- Python - 集合方法
- Python - 集合練習
- Python 字典
- Python - 字典
- Python - 訪問字典元素
- Python - 修改字典元素
- Python - 新增字典元素
- Python - 刪除字典元素
- Python - 字典檢視物件
- Python - 遍歷字典
- Python - 複製字典
- Python - 巢狀字典
- Python - 字典方法
- Python - 字典練習
- Python 陣列
- Python - 陣列
- Python - 訪問陣列元素
- Python - 新增陣列元素
- Python - 刪除陣列元素
- Python - 遍歷陣列
- Python - 複製陣列
- Python - 反轉陣列
- Python - 排序陣列
- Python - 合併陣列
- Python - 陣列方法
- Python - 陣列練習
- Python 檔案處理
- Python - 檔案處理
- Python - 寫入檔案
- Python - 讀取檔案
- Python - 重新命名和刪除檔案
- Python - 目錄
- Python - 檔案方法
- Python - OS 檔案/目錄方法
- Python - OS 路徑方法
- 面向物件程式設計
- Python - OOPs 概念
- Python - 類與物件
- Python - 類屬性
- Python - 類方法
- Python - 靜態方法
- Python - 建構函式
- Python - 訪問修飾符
- Python - 繼承
- Python - 多型
- Python - 方法重寫
- Python - 方法過載
- Python - 動態繫結
- Python - 動態型別
- Python - 抽象
- Python - 封裝
- Python - 介面
- Python - 包
- Python - 內部類
- Python - 匿名類和物件
- Python - 單例類
- Python - 包裝類
- Python - 列舉
- Python - 反射
- Python 錯誤與異常
- Python - 語法錯誤
- Python - 異常
- Python - try-except 塊
- Python - try-finally 塊
- Python - 丟擲異常
- Python - 異常鏈
- Python - 巢狀 try 塊
- Python - 使用者自定義異常
- Python - 日誌
- Python - 斷言
- Python - 內建異常
- Python 多執行緒
- Python - 多執行緒
- Python - 執行緒生命週期
- Python - 建立執行緒
- Python - 啟動執行緒
- Python - 加入執行緒
- Python - 執行緒命名
- Python - 執行緒排程
- Python - 執行緒池
- Python - 主執行緒
- Python - 執行緒優先順序
- Python - 守護執行緒
- Python - 執行緒同步
- Python 同步
- Python - 執行緒間通訊
- Python - 執行緒死鎖
- Python - 中斷執行緒
- Python 網路程式設計
- Python - 網路程式設計
- Python - 套接字程式設計
- Python - URL 處理
- Python - 泛型
- Python 庫
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 雜項
- Python - 日期與時間
- Python - 數學
- Python - 迭代器
- Python - 生成器
- Python - 閉包
- Python - 裝飾器
- Python - 遞迴
- Python - 正則表示式
- Python - PIP
- Python - 資料庫訪問
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 輸出格式化
- Python - 效能測量
- Python - 資料壓縮
- Python - CGI 程式設計
- Python - XML 處理
- Python - GUI 程式設計
- Python - 命令列引數
- Python - 文件字串
- Python - JSON
- Python - 傳送郵件
- Python - 擴充套件
- Python - 工具/實用程式
- Python - GUIs
- Python 高階概念
- Python - 抽象基類
- Python - 自定義異常
- Python - 高階函式
- Python - 物件內部
- Python - 記憶體管理
- Python - 元類
- Python - 使用元類進行超程式設計
- Python - 模擬和存根
- Python - Monkey Patching
- Python - 訊號處理
- Python - 型別提示
- Python - 自動化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 協程
- Python - 描述符
- Python - 診斷和修復記憶體洩漏
- Python - 不可變資料結構
- Python 有用資源
- Python - 問答
- Python - 線上測驗
- Python - 快速指南
- Python - 參考
- Python - 速查表
- Python - 專案
- Python - 有用資源
- Python - 討論
- Python 編譯器
- NumPy 編譯器
- Matplotlib 編譯器
- SciPy 編譯器
Python - 型別轉換
Python 型別轉換
從程式設計的角度來看,型別轉換是指將一個型別的物件轉換為另一個型別。在這裡,我們將學習 Python 程式設計中的型別轉換。
Python 型別轉換是一個將一種資料型別的字面量轉換為另一種資料型別的過程。Python 支援兩種型別的轉換——**隱式**和**顯式**。
在 Python 中,有不同的資料型別,例如數字、序列、對映等。可能會有這種情況,你擁有某種型別的資料,但你想以另一種形式使用它。例如,使用者輸入了一個字串,但你想將其用作數字。Python 的型別轉換機制允許你這樣做。
Python 隱式轉換
當任何語言編譯器/直譯器自動將一種型別的物件轉換為另一種型別時,這稱為自動或**隱式轉換**。Python 是一種強型別語言。它不允許在不相關的資料型別之間進行自動型別轉換。例如,字串不能轉換為任何數字型別。但是,整數可以轉換為浮點數。其他語言,如 JavaScript 是一種弱型別語言,其中整數會被強制轉換為字串以進行連線。
請注意,每種資料型別的記憶體需求不同。例如,Python 中的**整數**物件佔用 4 個位元組的記憶體,而**浮點數**物件由於其小數部分而需要 8 個位元組。因此,Python 直譯器不會自動將**浮點數**轉換為**整數**,因為這會導致資料丟失。另一方面,透過將其小數部分設定為 0,可以輕鬆地將**整數**轉換為**浮點數**。
當對**整數**和**浮點數**運算元進行任何算術運算時,會發生隱式**整數**到**浮點數**的轉換。
假設我們有一個**整數**和一個**浮點數**變數
<<< a=10 # int object <<< b=10.5 # float object
為了執行它們的加法,整數物件 10 將被升級為 10.0。它是一個浮點數,但等同於其之前的數值。現在我們可以執行兩個浮點數的加法。
<<< c=a+b <<< print (c) 20.5
在隱式型別轉換中,位元組大小較小的 Python 物件會被升級以匹配運算中其他物件的較大位元組大小。例如,在與浮點數物件相加之前,布林物件首先會被升級為整數,然後升級為浮點數。在下面的示例中,我們嘗試將布林物件新增到浮點數中,請注意 True 等於 1,False 等於 0。
a=True; b=10.5; c=a+b; print (c);
這將產生以下結果
11.5
Python 顯式轉換
儘管自動或隱式轉換僅限於**整數**到**浮點數**的轉換,但可以使用 Python 的內建函式 int()、float() 和 str() 來執行顯式轉換,例如字串到整數。
Python int() 函式
Python 的內建**int()**函式將整數字面量轉換為整數物件,將浮點數轉換為整數,並將字串轉換為整數(如果字串本身具有有效的整數字面量表示)。
使用帶有整數物件作為引數的**int()**等效於直接宣告一個**整數**物件。
<<< a = int(10) <<< a 10
與以下相同:
<<< a = 10 <<< a 10 <<< type(a) <class 'int>
如果**int()**函式的引數是浮點數物件或浮點表示式,它將返回一個整數物件。例如:
<<< a = int(10.5) #converts a float object to int <<< a 10 <<< a = int(2*3.14) #expression results float, is converted to int <<< a 6 <<< type(a) <class 'int'>
如果給定布林物件作為引數,**int()**函式也會返回整數 1。
<<< a=int(True) <<< a 1 <<< type(a) <class 'int'>
字串到整數
**int()**函式僅當字串包含有效的整數表示時,才會從字串物件返回一個整數。
<<< a = int("100") <<< a 100 <<< type(a) <class 'int'> <<< a = ("10"+"01") <<< a = int("10"+"01") <<< a 1001 <<< type(a) <class 'int'>
但是,如果字串包含非整數表示,Python 將引發 ValueError。
<<< a = int("10.5") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '10.5' <<< a = int("Hello World") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'Hello World'
int() 函式也可以從二進位制、八進位制和十六進位制字串返回整數。為此,函式需要一個 base 引數,該引數必須分別為 2、8 或 16。字串應具有有效的二進位制/八進位制/十六進位制表示。
二進位制字串轉換為整數
字串應該只由 1 和 0 組成,並且基數應為 2。
<<< a = int("110011", 2) <<< a 51
二進位制數 110011 的十進位制等價值為 51。
八進位制字串轉換為整數
字串只能包含 0 到 7 的數字,並且基數應為 8。
<<< a = int("20", 8) <<< a 16
八進位制數 20 的十進位制等價值為 16。
十六進位制字串轉換為整數
字串只能包含十六進位制符號,即 0-9 和 A、B、C、D、E 或 F。基數應為 16。
<<< a = int("2A9", 16) <<< a 681
十六進位制數 2A9 的十進位制等價值為 681。您可以使用 Windows、Ubuntu 或智慧手機中的計算器應用程式輕鬆驗證這些轉換。
以下是如何將數字、浮點數和字串轉換為整數資料型別的示例
a = int(1) # a will be 1 b = int(2.2) # b will be 2 c = int("3") # c will be 3 print (a) print (b) print (c)
這將產生以下結果:
1 2 3
Python float() 函式
float() 是 Python 中的內建函式。如果引數是浮點字面量、整數或具有有效浮點表示的字串,則它返回一個浮點物件。
使用浮點物件作為引數的 float() 等效於直接宣告浮點物件。
<<< a = float(9.99) <<< a 9.99 <<< type(a) <class 'float'>
與以下相同:
<<< a = 9.99 <<< a 9.99 <<< type(a) <class 'float'>
如果float() 函式的引數是整數,則返回值是一個浮點數,其小數部分設定為 0。
<<< a = float(100) <<< a 100.0 <<< type(a) <class 'float'>
如果字串包含有效的浮點數,則float() 函式從字串返回浮點物件;否則,將引發 ValueError。
<<< a = float("9.99") <<< a 9.99 <<< type(a) <class 'float'> <<< a = float("1,234.50") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: could not convert string to float: '1,234.50'
這裡出現 ValueError 的原因是字串中存在逗號。
為了進行字串到浮點數的轉換,浮點數的科學計數法也被認為是有效的。
<<< a = float("1.00E4") <<< a 10000.0 <<< type(a) <class 'float'> <<< a = float("1.00E-4") <<< a 0.0001 <<< type(a) <class 'float'>
以下是如何將數字、浮點數和字串轉換為浮點資料型別的示例
a = float(1) # a will be 1.0 b = float(2.2) # b will be 2.2 c = float("3.3") # c will be 3.3 print (a) print (b) print (c)
這將產生以下結果:
1.0 2.2 3.3
Python str() 函式
我們看到了 Python 如何從相應的字串表示中獲得整數或浮點數。str() 函式的工作方式相反。它用引號 (') 括起整數或浮點物件以返回 str 物件。str() 函式返回任何 Python 物件的字串表示。在本節中,我們將看到 Python 中str() 函式的不同示例。
str() 函式具有三個引數。第一個必需引數(或引數)是我們要獲取其字串表示的物件。其他兩個運算子 encoding 和 errors 是可選的。
我們將執行 Python 控制檯中的 str() 函式,以輕鬆驗證返回的物件是一個字串,並帶有包含的引號 (')。
整數轉換為字串
您可以按照如下方式將任何整數轉換為字串
<<< a = str(10) <<< a '10' <<< type(a) <class 'str'>
浮點數轉換為字串
str() 函式將浮點物件及其兩種表示形式(標準表示法,用小數點分隔整數和小數部分;以及科學計數法)轉換為字串物件。
<<< a=str(11.10) <<< a '11.1' <<< type(a) <class 'str'> <<< a = str(2/5) <<< a '0.4' <<< type(a) <class 'str'>
在第二種情況下,將一個除法表示式作為引數傳遞給 str() 函式。請注意,表示式首先被求值,然後結果被轉換為字串。
使用 E 或 e 和正或負冪的科學計數法表示的浮點數將使用 str() 函式轉換為字串。
<<< a=str(10E4) <<< a '100000.0' <<< type(a) <class 'str'> <<< a=str(1.23e-4) <<< a '0.000123' <<< type(a) <class 'str'>
當布林常量作為引數輸入時,它將用 (') 括起來,以便 True 變成 'True'。列表和元組物件也可以作為引數傳遞給 str() 函式。生成的字串是括在 (') 中的列表/元組。
<<< a=str('True') <<< a 'True' <<< a=str([1,2,3]) <<< a '[1, 2, 3]' <<< a=str((1,2,3)) <<< a '(1, 2, 3)' <<< a=str({1:100, 2:200, 3:300}) <<< a '{1: 100, 2: 200, 3: 300}'
以下是如何將數字、浮點數和字串轉換為字串資料型別的示例
a = str(1) # a will be "1" b = str(2.2) # b will be "2.2" c = str("3.3") # c will be "3.3" print (a) print (b) print (c)
這將產生以下結果:
1 2.2 3.3
序列型別的轉換
列表、元組和字串是 Python 的序列型別。它們是有序或索引的專案集合。
可以使用list() 函式將字串和元組轉換為列表物件。類似地,tuple() 函式將字串或列表轉換為元組。
我們將採用這三種序列型別的每個物件,並研究它們的相互轉換。
<<< a=[1,2,3,4,5] # List Object <<< b=(1,2,3,4,5) # Tupple Object <<< c="Hello" # String Object ### list() separates each character in the string and builds the list <<< obj=list(c) <<< obj ['H', 'e', 'l', 'l', 'o'] ### The parentheses of tuple are replaced by square brackets <<< obj=list(b) <<< obj [1, 2, 3, 4, 5] ### tuple() separates each character from string and builds a tuple of characters <<< obj=tuple(c) <<< obj ('H', 'e', 'l', 'l', 'o') ### square brackets of list are replaced by parentheses. <<< obj=tuple(a) <<< obj (1, 2, 3, 4, 5) ### str() function puts the list and tuple inside the quote symbols. <<< obj=str(a) <<< obj '[1, 2, 3, 4, 5]' <<< obj=str(b) <<< obj '(1, 2, 3, 4, 5)'
因此,Python 的顯式型別轉換功能允許在內建函式的幫助下將一種資料型別轉換為另一種資料型別。
資料型別轉換函式
有幾個內建函式可以執行從一種資料型別到另一種資料型別的轉換。這些函式返回一個表示已轉換值的新物件。
序號 | 函式及描述 |
---|---|
1 | Python int() 函式
將 x 轉換為整數。如果 x 是字串,則 base 指定基數。 |
2 | Python long() 函式
將 x 轉換為長整數。如果 x 是字串,則 base 指定基數。 |
3 | Python float() 函式
將 x 轉換為浮點數。 |
4 | Python complex() 函式
建立一個複數。 |
5 | Python str() 函式
將物件 x 轉換為字串表示。 |
6 | Python repr() 函式
將物件 x 轉換為表示式字串。 |
7 | Python eval() 函式
評估字串並返回一個物件。 |
8 | Python tuple() 函式
將 s 轉換為元組。 |
9 | Python list() 函式
將 s 轉換為列表。 |
10 | Python set() 函式
將 s 轉換為集合。 |
11 | Python dict() 函式
建立一個字典。d 必須是 (鍵,值) 元組的序列。 |
12 | Python frozenset() 函式
將 s 轉換為凍結集。 |
13 | Python chr() 函式
將整數轉換為字元。 |
14 | Python unichr() 函式
將整數轉換為 Unicode 字元。 |
15 | Python ord() 函式
將單個字元轉換為其整數值。 |
16 | Python hex() 函式
將整數轉換為十六進位制字串。 |
17 | Python oct() 函式
將整數轉換為八進位制字串。 |