目錄
1、為什麼要進行資料型別轉換
使用Python處理資料時,不可避免的要使用資料型別之間的轉換。如int
、float
、string
之間的轉換。
例如:
問:通過
input()
函式接收使用者輸入的資料都是字串型別,如果使用者輸入1,想得到整型該如何操作?答:轉換資料型別即可,即將字串型別轉換成整型。
2、資料型別轉換本質
- 所謂的型別轉換,將一個型別的物件轉換為其他物件。
- 型別轉換不是改變物件本身的資料型別,而是根據當前物件的值建立一個新物件,因為
int
、float
、string
變數的資料型別是不會改變的,需要把這個新建立的資料物件,賦值給當前物件的引用變數,那麼變數的資料型別才會發生改變。
3、資料型別轉換用到的函式
下面是我們常用到的一個資料型別轉換函式的列表。
函式 | 說明 |
---|---|
int(x [,base]) (常用) |
將x轉換為一個整數 |
float(x) (常用) |
將x轉換為一個浮點數 |
complex(real [,imag]) |
建立一個複數,real 為實部,imag 為虛部 |
str(x) (常用) |
將物件x 轉換為字串 |
repr(x) |
將物件x 轉換為表示式字串 |
eval(str) (常用) |
用來計算在字串中的有效Python表示式,並返回一個物件 |
tuple(s) (常用) |
將序列 s 轉換為一個元組 |
list(s) (常用) |
將序列 s 轉換為一個列表 |
chr(x) |
將一個整數轉換為一個Unicode 字元 |
ord(x) |
將一個字元轉換為它的ASCII 整數值 |
hex(x) |
將一個整數轉換為一個十六進位制字串 |
oct(x) |
將一個整數轉換為一個八進位制字串 |
bin(x) |
將一個整數轉換為一個二進位制字串 |
我們下面對標識有常用的方法進行說明,其他的函式,我們用到的話自己按照文件練習一下就可以會用。
4、常用資料型別轉換的函式
(1)int()
函式
int()
函式可以用來將其他的物件資料型別轉換為整型。
示例:
# 1、布林值轉換為整型:True -> 1 False -> 0
a = True
"""
呼叫int()來將a轉換為整型。
int()函式不會對原來的變數a產生影響,
int()函式是將物件轉換為指定的資料型別,並將其作為返回值返回。
如果希望修改原來的變數,則需要對變數進行重新賦值
這裡很重要,一定要理解。
"""
# 呼叫int()來將a轉換為整型。
int(a)
# int()函式不會對原來的變數a產生影響,列印結果可以看出。
print(type(a)) # <class 'bool'>
# 如果希望修改原來的變數,則需要對變數進行重新賦值
a = int(a)
print(type(a)) # <class 'int'>
# 2、浮點數:直接取整,省略小數點後的內容。
i = 123.456
# 變數沒有重新賦值,原變數資料沒有任何改變
int(i)
print(i) # 123.456
print(type(i)) # <class 'float'>
# 變數重新賦值後,數值和型別都發生了改變。
i = int(i)
print(i) # 123
print(type(i)) # <class 'int'>
"""
# 3、字串:合法的整數字符串,直接轉換為對應的數字
如果不是一個合法的整數字符串,則報錯:
ValueError: invalid literal for int() with base 10: '數值'。
對於其他不可轉換為整型的物件,直接丟擲異常 TypeError。
(如果出現TypeError的報錯,說明型別轉換異常了,換句話說就是該型別不能這麼轉換)
"""
# 合法的整數字符串
i = "123456"
i = int(i)
print(i) # 123456
print(type(i)) # <class 'int'>
# 合法的整數字符串
j = "123.456"
j = int(j)
print(j)
print(type(j))
# 在第二行,資料型別轉換的時候就會報錯
# ValueError: invalid literal for int() with base 10: '123.456'
# 對於其他不可轉換為整型的物件,直接丟擲異常 ValueError。
# 如:None
k = None
k = int(k)
# 報出異常:TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
(2)float()
函式
float()
函式可以用來將其他的物件資料型別轉換為小數。
示例:
"""
float()函式和int()函式的用法基本一致,不同的是它會將物件轉換為浮點數。
1、布林值:True -> 1.0 False -> 0.0。
2、整型:整數後邊直接加上.0,如:15.0。
3、字串:合法的數字(整數,小數)字串,直接轉換為對應的數字。
4、對於其他不可轉換為整型的物件,直接丟擲異常 TypeError
(如果出現TypeError的報錯,說明型別轉換異常了,換句話說就是該型別不能這麼轉換))
"""
# 簡單練習,整型
i = 15
i = float(i)
print(i) # 15.0
print(type(i)) # <class 'float'>
# 簡單練習,字串
i = "15"
i = float(i)
print(i) # 15.0
print(type(i)) # <class 'float'>
j = "15.12312"
j = float(j)
print(j) # 15.12312
print(type(j)) # <class 'float'>
# 簡單練習,None
# 同int()函式
(3)str()
函式
str()
函式可以用來將其他的物件資料型別轉換為字串。
示例:
"""
1、布林值:True -> 'True' False -> 'False'
2、數值型直接原樣轉換成字串
3、對於None型別,轉換成字串時,並沒有報錯。
(可能沒學到的型別資料也不會報錯)
"""
# 簡單練習,float
i = 15.1231
i = str(i)
print(i) # 15.1231
print(type(i)) # <class 'str'>
# 對於None型別,轉換成字串時,並沒有報錯。
k = None
k = str(k)
print(k) # None
print(type(k)) # <class 'str'>
(4)bool()
函式
bool()
函式可以將物件轉換為布林值,任何物件都可以轉換為布林值。
示例:
"""
規則:
對於所有表示空性的物件都會轉換為False,其餘的轉換為True
哪些表示的空性:0 、 None 、 ''(空串) 。其他的可變物件學後再說。
"""
# 簡單練習,非空性
i = 15.1231
i = bool(i)
print(i) # True
print(type(i)) # <class 'bool'>
# 簡單練習,非空性
j = "python"
j = bool(j)
print(j) # True
print(type(j)) # <class 'bool'>
# 簡單練習,非空性
k = None
k = bool(k)
print(k) # False
print(type(k)) # <class 'bool'>
(5)eval()
函式
eval()
函式是Python中的一個內建函式。- 一般我們會這樣描述
evel()
函式,把字串裡邊的資料轉換成他原本的型別。 eval()
函式用法也是非常的靈活,我們主要說明通過eval()
函式把字串轉換成其他物件資料型別。
示例:
str1 = 'True'
str2 = '1'
str3 = '1.1'
str4 = '(1000, 2000, 3000)'
str5 = '[1000, 2000, 3000]'
print(type(eval(str1))) # <class 'bool'>
print(type(eval(str2))) # <class 'int'>
print(type(eval(str3))) # <class 'float'>
print(type(eval(str4))) # <class 'tuple'>
print(type(eval(str5))) # <class 'list'>
提示:Pyhton中資料型別轉換的函式有很多,以後可以慢慢積累不同函式的使用方法。