Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換詳解
1. Python的數(shù)據(jù)類(lèi)型
上一遍博文已經(jīng)詳細(xì)地介紹了Python的數(shù)據(jù)類(lèi)型,詳見(jiàn)鏈接Python的變量命名及數(shù)據(jù)類(lèi)型。
在這里總結(jié)一下Python的數(shù)據(jù)類(lèi)型:
- 字符串類(lèi)型 String
- 數(shù)字類(lèi)型 Number:
整形 int
浮點(diǎn)型 float
復(fù)數(shù) complex
- 布爾類(lèi)型 Bool列
- 表類(lèi)型 List
- 元組類(lèi)型 Tuple
- 字典類(lèi)型 Dictionary
- 集合類(lèi)型 Set
可變數(shù)據(jù)類(lèi)型:列表,字典,集合
不可變數(shù)據(jù)類(lèi)型:字符串,數(shù)字類(lèi)型,布爾類(lèi)型,元組
容器類(lèi)型數(shù)據(jù):字符串,列表,元組,字典,集合
非容器類(lèi)型數(shù)據(jù):數(shù)字類(lèi)型,布爾類(lèi)型
2. Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換
由于不同的數(shù)據(jù)類(lèi)型之間是不能進(jìn)行運(yùn)算的,所以我們需要數(shù)據(jù)類(lèi)型轉(zhuǎn)換。Python中的數(shù)據(jù)類(lèi)型轉(zhuǎn)換有兩種,一種是自動(dòng)類(lèi)型轉(zhuǎn)換,即Python在計(jì)算中會(huì)自動(dòng)地將不同類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為同類(lèi)型數(shù)據(jù)來(lái)進(jìn)行計(jì)算;另一種是強(qiáng)制類(lèi)型轉(zhuǎn)換,即需要我們基于不同的開(kāi)發(fā)需求,強(qiáng)制地將一個(gè)數(shù)據(jù)類(lèi)型轉(zhuǎn)換為另一個(gè)數(shù)據(jù)類(lèi)型。
2.1 自動(dòng)類(lèi)型轉(zhuǎn)換
當(dāng)兩個(gè)不同類(lèi)型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),結(jié)果會(huì)像更高精度進(jìn)行計(jì)算,精度等級(jí):布爾 < 整型 < 浮點(diǎn)型 < 復(fù)數(shù)。
a = 10 b = True print(a + b) # 11 ''' 在和數(shù)字運(yùn)算時(shí),True轉(zhuǎn)為1,F(xiàn)alse轉(zhuǎn)為0 ''' a = 10 b = 3.14 print(a + b) # 13.14 ''' 整型與浮點(diǎn)型運(yùn)算時(shí),整型轉(zhuǎn)化為浮點(diǎn)型,結(jié)果也為浮點(diǎn)型 '''
2.2 強(qiáng)制類(lèi)型轉(zhuǎn)換
- str( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為字符串類(lèi)型
- int( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為整型
- float( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為浮點(diǎn)型
- bool( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為布爾類(lèi)型
- list( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為列表類(lèi)型
- tuple( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為元組類(lèi)型
- dict( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為字典類(lèi)型
- set( ):可以把其他類(lèi)型數(shù)據(jù)轉(zhuǎn)化為集合類(lèi)型
2.2.1 其他轉(zhuǎn)字符串
所有類(lèi)型都可以轉(zhuǎn)化為字符串類(lèi)型。
a = 123 # int res = str(a) print(res, type(res)) # 123 <class 'str'> a = True # bool res = str(a) print(res, type(res)) # True <class 'str'> a = [1, 2, 3] # list res = str(a) print(res, type(res)) # [1, 2, 3] <class 'str'> a = (1, 2, 3) # tuple res = str(a) print(res, type(res)) # (1, 2, 3) <class 'str'> a = {1, 2, 3} # set res = str(a) # {1, 2, 3} print(res, type(res)) # {1, 2, 3} <class 'str'> a = {1: 'a', 2: 'b'} # dict res = str(a) print(res, type(res)) # {1: 'a', 2: 'b'} <class 'str'>
2.2.2 其他轉(zhuǎn)數(shù)字類(lèi)型
數(shù)字類(lèi)型之間可以相互轉(zhuǎn)換,但容器類(lèi)型中只有字符串可以轉(zhuǎn)換為數(shù)字類(lèi)型,并且字符串中的元素必須為純數(shù)字,否則無(wú)法轉(zhuǎn)換。
''' 1. 數(shù)字類(lèi)型之間相互轉(zhuǎn)換 ''' a = 123 # int res = float(a) print(res, type(res)) # 123.0 <class 'float'> a = True # bool res = float(a) print(res, type(res)) # 1.0 <class 'float'> ''' 2. 字符串類(lèi)型轉(zhuǎn)數(shù)字類(lèi)型 ''' a = '123' # str res = int(a) print(res, type(res)) # 123 <class 'int'> a = '123abc' # str res = int(a) print(res, type(res)) # 此時(shí)python會(huì)報(bào)錯(cuò),報(bào)錯(cuò)類(lèi)型為T(mén)ypeError a = [1, 2, 3] # list res = int(a) print(res, type(res)) # 此時(shí)同樣會(huì)報(bào)錯(cuò),因?yàn)槌俗址酝獾钠渌萜黝?lèi)型都不可以轉(zhuǎn)換成數(shù)字類(lèi)型
其他類(lèi)型轉(zhuǎn)數(shù)字類(lèi)型中有一個(gè)特殊情況,就是其他類(lèi)型轉(zhuǎn)布爾類(lèi)型。 bool( ) 可以把其他類(lèi)型轉(zhuǎn)為T(mén)rue或False。
''' 1. 容器類(lèi)型轉(zhuǎn)布爾類(lèi)型: 容器中為空 --> False 容器中有元素 --> True ''' a = '' # 空字符串 res = bool(a) print(res, type(res)) # False <class 'bool'> a = '0' # 字符串中有元素 res = bool(a) print(res, type(res)) # True <class 'bool'> a = [] # 空列表 res = bool(a) print(res, type(res)) # False <class 'bool'> a = [1, 2, 3] # 列表中有元素 res = bool(a) print(res, type(res)) # True <class 'bool'> a = tuple() # 空元組 res = bool(a) print(res, type(res)) # False <class 'bool'> a = dict() # 空字典 res = bool(a) print(res, type(res)) # False <class 'bool'> a = set() # 空集合 res = bool(a) print(res, type(res)) # False <class 'bool'> ''' 2. 數(shù)字類(lèi)型轉(zhuǎn)布爾類(lèi)型: int類(lèi)型中,0為False,其他為真 float類(lèi)型中,0.0為False,其他為真 ''' a = 0 # int res = bool(a) print(res, type(res)) # False <class 'bool'> a = 0.0 # float res = bool(a) print(res, type(res)) # False <class 'bool'> a = 0.345 # float res = bool(a) print(res, type(res)) # True <class 'bool'>
2.2.3 其他轉(zhuǎn)列表類(lèi)型
1.數(shù)字類(lèi)型是非容器類(lèi)型,不能轉(zhuǎn)換為列表
2.字符串轉(zhuǎn)列表時(shí),會(huì)把字符串中的每一個(gè)字符當(dāng)作列表的元素
3.元組轉(zhuǎn)列表時(shí),會(huì)把字符串中的每一個(gè)字符當(dāng)作列表的元素
4.字典轉(zhuǎn)列表時(shí),只保留字典中的鍵
5.集合轉(zhuǎn)列表時(shí),結(jié)果是無(wú)序的,因?yàn)榧媳旧砭褪菬o(wú)序的
a = '123' # str res = list(a) print(res, type(res)) # ['1', '2', '3'] <class 'list'> a = (1, 2, 3) # tuple res = list(a) print(res, type(res)) # ['1', '2', '3'] <class 'list'> a = {'name': 'Alice', 'Age': 5, 'Sex': 'Female'} # dict res = list(a) print(res, type(res)) # ['name', 'Age, 'Sex'] <class 'list'> a = {'a', 'b', 1, 2, 'c'} # set res = print(a) print(res, type(res)) # ['b', 2, 1, 'a', 'c'] <class 'list>
2.2.4 其他轉(zhuǎn)元組類(lèi)型
其他類(lèi)型數(shù)據(jù)轉(zhuǎn)元組類(lèi)型與其他類(lèi)型數(shù)據(jù)轉(zhuǎn)列表類(lèi)型的規(guī)則相同。
a = 'abc' # str res = tuple(a) print(res, type(res)) # ('a', 'b', 'c') <class 'tuple> a = [1, 2, 3] # list res = tuple(a) print(res, type(res)) # (1, 2, 3) <class 'tuple> a = {'name': 'Alice', 'Age': 5, 'Sex': 'Female'} # dict res = tuple(a) print(res, type(res)) # ('name', 'Age, 'Sex') <class 'tuple> a = {'a', 'b', 1, 2, 'c'} # set res = tuple(a) print(res, type(res)) # ('b', 2, 1, 'a', 'c') <class 'tuple>
2.2.5 其他轉(zhuǎn)集合類(lèi)型
1.數(shù)字類(lèi)型是非容器類(lèi)型,不能轉(zhuǎn)換為集合
2.字符串轉(zhuǎn)集合時(shí),結(jié)果是無(wú)序的
3.列表轉(zhuǎn)集合時(shí),結(jié)果是無(wú)序的
4.元組轉(zhuǎn)集合時(shí),結(jié)果是無(wú)序的
5.字典轉(zhuǎn)集合時(shí),只保字典中的鍵,結(jié)果是無(wú)序的
a = '123' # str res = set(a) print(res, type(res)) # {'3', '2', '1'} <class 'set'> a = ['a', 'b', 2, 1] # list res = set(a) print(res, type(res)) # {2, 1, 'b', 'a'} <class 'set'> a = ('a', 'b', 2, 1) # tuple res = set(a) print(res, type(res)) # {2, 1, 'b', 'a'} <class 'set'> a = {'name': 'Alice', 'Age': 5, 'Sex': 'Female'} # dict res = set(a) print(res, type(res)) # {'Age', 'name', 'Sex'} <class 'tuple>
2.2.6 其他轉(zhuǎn)字典類(lèi)型
1.數(shù)字類(lèi)型是非容器類(lèi)型,不能轉(zhuǎn)換為字典
2.字符串不能轉(zhuǎn)字典類(lèi)型,因?yàn)樽址荒苌啥?jí)容器
3.列表類(lèi)型轉(zhuǎn)字典類(lèi)型,列表必須為等長(zhǎng)二級(jí)容器,子容器中的元素個(gè)數(shù)必須為2
4.元組類(lèi)型轉(zhuǎn)字典類(lèi)型,列表必須為等長(zhǎng)二級(jí)容器,子容器中的元素個(gè)數(shù)必須為2集
5.合不能轉(zhuǎn)字典類(lèi)型,因?yàn)榧喜恢С止?/p>
a = '123' # str res = dict(a) print(res, type(res)) # 此時(shí)python會(huì)報(bào)錯(cuò):ValueError: dictionary update sequence element #0 has length 1; 2 is required a = [[1, 2], ['a','b']] # 等長(zhǎng)二級(jí)列表 res = dict(a) print(res, type(res)) # {1: 2, 'a': 'b'} <class 'dict'> a = ((1, 2), (3, 4), (5, 6)) # 等長(zhǎng)二級(jí)元組 res = dict(a) print(res, type(res)) # {1: 2, 3: 4, 5: 6} <class 'tuple'> a = {{1, 2}, {3, 4}} # 等長(zhǎng)二級(jí)集合 res = dict(a) print(res,type(res)) # 此時(shí)python會(huì)報(bào)錯(cuò):TypeError: unhashable type: 'set'
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
- 詳解Python中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換
- Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換實(shí)現(xiàn)方法
- Python變量和數(shù)據(jù)類(lèi)型和數(shù)據(jù)類(lèi)型的轉(zhuǎn)換
- python輸入、數(shù)據(jù)類(lèi)型轉(zhuǎn)換及運(yùn)算符方式
- 詳解Python數(shù)據(jù)類(lèi)型、進(jìn)制轉(zhuǎn)換、字符串格式化的問(wèn)題
- Python 轉(zhuǎn)換數(shù)據(jù)類(lèi)型函數(shù)和轉(zhuǎn)換數(shù)據(jù)類(lèi)型的作用
- Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換匯總
- python 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的總結(jié)
- Python如何實(shí)現(xiàn)強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換
- Python常用數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換總結(jié)
- Python數(shù)據(jù)類(lèi)型相互轉(zhuǎn)換
相關(guān)文章
python常用操作之使用多個(gè)界定符(分隔符)分割字符串的方法實(shí)例
在使用Python處理字符串的時(shí)候,有時(shí)候會(huì)需要分割字符,下面這篇文章主要給大家介紹了關(guān)于python常用操作之使用多個(gè)界定符(分隔符)分割字符串的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn)
本文主要介紹了python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09Python中時(shí)間datetime的處理與轉(zhuǎn)換用法總結(jié)
今天小編就為大家分享一篇關(guān)于Python中時(shí)間datetime的處理與轉(zhuǎn)換用法總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02Python中如何快速解析JSON對(duì)象數(shù)組
由于瀏覽器可以迅速地解析JSON對(duì)象,它們有助于在客戶(hù)端和服務(wù)器之間傳輸數(shù)據(jù),本文將描述如何使用Python的JSON模塊來(lái)傳輸和接收J(rèn)SON數(shù)據(jù)2023-09-09Python Numpy 自然數(shù)填充數(shù)組的實(shí)現(xiàn)
今天小編就為大家分享一篇Python Numpy 自然數(shù)填充數(shù)組的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11Python3中的最大整數(shù)和最大浮點(diǎn)數(shù)實(shí)例
今天小編就為大家分享一篇Python3中的最大整數(shù)和最大浮點(diǎn)數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07