目錄
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中數據類型轉換的函數有很多,以后可以慢慢積累不同函數的使用方法。