『無為則無心』Python基礎 — 11、Python中的數據類型轉換


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM