『無為則無心』Python基礎 — 11、Python中的資料型別轉換

繁華似錦Fighting發表於2021-06-28

1、為什麼要進行資料型別轉換

使用Python處理資料時,不可避免的要使用資料型別之間的轉換。如intfloatstring之間的轉換。

例如:

問:通過input()函式接收使用者輸入的資料都是字串型別,如果使用者輸入1,想得到整型該如何操作?

答:轉換資料型別即可,即將字串型別轉換成整型。

2、資料型別轉換本質

  • 所謂的型別轉換,將一個型別的物件轉換為其他物件。
  • 型別轉換不是改變物件本身的資料型別,而是根據當前物件的值建立一個新物件,因為intfloatstring變數的資料型別是不會改變的,需要把這個新建立的資料物件,賦值給當前物件的引用變數,那麼變數的資料型別才會發生改變。

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中資料型別轉換的函式有很多,以後可以慢慢積累不同函式的使用方法。

相關文章