數(shù)據(jù)類型轉(zhuǎn)換
分類
自動數(shù)據(jù)類型轉(zhuǎn)換(隱式)
強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換(顯式)
原則:不同的數(shù)據(jù)之間無法進(jìn)行運算
自動數(shù)據(jù)類型轉(zhuǎn)換
程序自發(fā)的行為,在需要的情況下進(jìn)行的操作,無法干預(yù)
多發(fā)生在運算和判斷的情況
自動轉(zhuǎn)換時向更加精確的方向轉(zhuǎn)換
運算
示例代碼
#聲明一個整數(shù)
intvar = 99
#聲明一個浮點數(shù)
floatvar = 5.56
#加法運算(發(fā)生了自動類型轉(zhuǎn)換)
result = intvar + floatvar #intvar變成了浮點數(shù)
print(result)
print(type(result))
運行結(jié)果
104.56
<class 'float'>
判斷
示例代碼
if True:
print("hello!")
if -5:
print("hello")
if 56:
print("hello")
運行結(jié)果
hello!
hello
hello
強(qiáng)制類型數(shù)據(jù)轉(zhuǎn)換
- 根據(jù)程序員的開發(fā)意愿,自己書寫的代碼進(jìn)行的操作
強(qiáng)制轉(zhuǎn)換為整型 Int
1.使用int()
2.浮點數(shù)轉(zhuǎn)換為整數(shù),只保留整數(shù)部分
示例代碼
var = 8.9
print(var, type(var))
newvar = int(var)
print(newvar, type(newvar))
運行結(jié)果
8.9 <class 'float'>
8 <class 'int'>
3.布爾值轉(zhuǎn)換為整型,True轉(zhuǎn)換1,False轉(zhuǎn)換為0
示例代碼
var = True
print(var, type(var))
newvar = int(var)
print(newvar, type(newvar))
運行結(jié)果
True <class 'bool'>
1 <class 'int'>
4. 復(fù)數(shù)無法轉(zhuǎn)換為整型
5. 字符串只有純整數(shù)的字符串能轉(zhuǎn)換為整數(shù)
示例代碼
var = '99'
print(var, type(var))
newvar = int(var)
print(newvar, type(newvar))
運行結(jié)果
99 <class 'str'>
99 <class 'int'>
6. 列表不能轉(zhuǎn)換
7. 元組不能轉(zhuǎn)換
8. 集合不能轉(zhuǎn)換
9. 字典不能轉(zhuǎn)換
強(qiáng)制轉(zhuǎn)換為浮點型 Float
1. 使用float()
2.整型轉(zhuǎn)換為浮點型,加.0
示例代碼
var = 8
print(var, type(var))
newvar = float(var)
print(newvar, type(newvar))
運行結(jié)果
8 <class 'int'>
8.0 <class 'float'>
3. 布爾值轉(zhuǎn)換為浮點數(shù),True轉(zhuǎn)換為1.0,False轉(zhuǎn)換為0.0
4. 復(fù)數(shù)不能轉(zhuǎn)換
5. 字符串只要是數(shù)值類型的字符串能轉(zhuǎn)換為浮點數(shù)
示例代碼
var = '99'
print(var, type(var))
newvar = float(var)
print(newvar, type(newvar))
var = '99.9'
print(var, type(var))
newvar = float(var)
print(newvar, type(newvar))
運行結(jié)果
99 <class 'str'>
99.0 <class 'float'>
99.9 <class 'str'>
99.9 <class 'float'>
6. 列表不能轉(zhuǎn)換
7. 元組不能轉(zhuǎn)換
8. 集合不能轉(zhuǎn)換
9. 字典不能轉(zhuǎn)換
強(qiáng)制轉(zhuǎn)換為布爾型 Bool
1.使用bool()
2.整型轉(zhuǎn)換為布爾型,只有0才能轉(zhuǎn)換為False,其他值都為True
示例代碼
var = 8
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
運行結(jié)果
8 <class 'int'>
True <class 'bool'>
3. 浮點型轉(zhuǎn)換為布爾值,只有0.0才能轉(zhuǎn)換為False,其他值都為True
4. 復(fù)數(shù)轉(zhuǎn)換為布爾值,只有當(dāng)實部和虛部都是0時,才轉(zhuǎn)換為False,其他都是True
示例代碼
var = 1 + 2j
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
var = 0 + 0j
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
運行結(jié)果
(1+2j) <class 'complex'>
True <class 'bool'>
0j <class 'complex'>
False <class 'bool'>
5. 字符串只要是''或""內(nèi)有字符就轉(zhuǎn)換為True,沒有(空字符串)就轉(zhuǎn)換為False
示例代碼
var = '0'
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
var = ' ' #空格
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
var = '' #空字符串
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
運行結(jié)果
0 <class 'str'>
True <class 'bool'>
<class 'str'>
True <class 'bool'>
<class 'str'>
False <class 'bool'>
6. 列表轉(zhuǎn)換為布爾值,[]內(nèi)有就為轉(zhuǎn)換為True,沒有(空列表,只有空格)就轉(zhuǎn)換為False
示例代碼
var = [0]
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
var = [ ] #空格
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
var = [] #空列表
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
運行結(jié)果
[0] <class 'list'>
True <class 'bool'>
[] <class 'list'>
False <class 'bool'>
[] <class 'list'>
False <class 'bool'>
7. 元組轉(zhuǎn)換為布爾值,()內(nèi)有就為轉(zhuǎn)換為True,沒有(空列表,只有空格)就轉(zhuǎn)換為False
示例代碼
var = (0,) #不能用(0)表示一個單元素元組,系統(tǒng)會默認(rèn)為0(int)
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
var = ( ) #空格
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
var = () #空元組
print(var, type(var))
newvar = bool(var)
print(newvar, type(newvar))
運行結(jié)果
(0,) <class 'tuple'>
True <class 'bool'>
() <class 'tuple'>
False <class 'bool'>
() <class 'tuple'>
False <class 'bool'>
8. 集合轉(zhuǎn)換為布爾值,{}內(nèi)有就為轉(zhuǎn)換為True,空集合set()就轉(zhuǎn)換為False
示例代碼
var = set() #定義一個空集合的方法
print(var, type(var))
var = {} #空的花括號是字典
print(var, type(var))
運行結(jié)果
set() <class 'set'> #表示空列表
{} <class 'dict'>
9. 字典轉(zhuǎn)換為布爾值,{}內(nèi)有就為轉(zhuǎn)換為True,沒有(空字典)就轉(zhuǎn)換為False
強(qiáng)制轉(zhuǎn)換為復(fù)數(shù) Complex
1. 使用complex()
2. 整型轉(zhuǎn)換為復(fù)數(shù),整數(shù)成為復(fù)數(shù)的實部,在整數(shù)后面加+0j
示例代碼
var = 88
print(var, type(var))
newvar = complex(var)
print(var, type(newvar))
運行結(jié)果
88 <class 'int'>
(88+0j) <class 'complex'>
3.浮點數(shù)轉(zhuǎn)換為復(fù)數(shù),浮點數(shù)不變在,浮點數(shù)后面加+0j
示例代碼
var = 8.8
print(var, type(var))
newvar = complex(var)
print(var, type(newvar))
運行結(jié)果
8.8 <class 'float'>
(8.8+0j) <class 'complex'>
4.布爾值轉(zhuǎn)換為復(fù)數(shù),True轉(zhuǎn)換為(1+0j),False轉(zhuǎn)換為0j
示例代碼
var = True
print(var, type(var))
newvar = complex(var)
print(var, type(newvar))
var = False
print(var, type(var))
newvar = complex(var)
print(var, type(newvar))
運行結(jié)果
True <class 'bool'>
(1+0j) <class 'complex'>
False <class 'bool'>
0j <class 'complex'>
5.字符串轉(zhuǎn)換為復(fù)數(shù),只有數(shù)字或者復(fù)數(shù)real+img形式的字符串
6.列表不能轉(zhuǎn)換
7.元組不能轉(zhuǎn)換
8.集合不能轉(zhuǎn)換
9.字典不能轉(zhuǎn)換
強(qiáng)制轉(zhuǎn)換為字符串 Str
1.使用str()
2.整數(shù)轉(zhuǎn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = 19
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
19 <class 'int'>
19 <class 'str'>
3.浮點數(shù)轉(zhuǎn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = 1.9
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
1.9 <class 'float'>
1.9 <class 'str'>
4.布爾類型轉(zhuǎn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = True
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
var = False
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
True <class 'bool'>
True <class 'str'>
False <class 'bool'>
False <class 'str'>
5.復(fù)數(shù)轉(zhuǎn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = 99 + 12j
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
(99+12j) <class 'complex'>
(99+12j) <class 'str'>
6.列表轉(zhuǎn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = [1,2,2,3]
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
[1,2,2,3] <class 'list'>
[1,2,2,3] <class 'str'>
7.元組準(zhǔn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = (1,2,2,3)
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
(1,2,2,3) <class 'tuple'>
(1,2,2,3) <class 'str'>
8.集合轉(zhuǎn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = {1,2,3,4}
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
{1, 2, 3, 4} <class 'set'>
{1, 2, 3, 4} <class 'str'>
9.字典轉(zhuǎn)換為字符串,類型發(fā)生轉(zhuǎn)化,值不變,打印的結(jié)果不變
示例代碼
var = {'行者': '武松', '小旋風(fēng)': '柴進(jìn)', '智多星': '吳用'}
print(var, type(var))
newvar = str(var)
print(newvar, type(newvar))
運行結(jié)果
{'行者': '武松', '小旋風(fēng)': '柴進(jìn)', '智多星': '吳用'} <class 'dict'>[]
{'行者': '武松', '小旋風(fēng)': '柴進(jìn)', '智多星': '吳用'} <class 'str'>
容器類數(shù)據(jù):
只有容器類數(shù)據(jù)才能轉(zhuǎn)換為容器類數(shù)據(jù),字符串除外
字符串
列表
元組
集合
字典
強(qiáng)制轉(zhuǎn)換為列表 List
1.使用list()
2.整型不能轉(zhuǎn)換
3.浮點型不能準(zhǔn)換
4.布爾型不能準(zhǔn)換
5.復(fù)數(shù)不能準(zhǔn)換
6.字符串轉(zhuǎn)換為列表,每個字符串變成列表中的每個值
示例代碼
var = 'Hero will be , 唧唧復(fù)唧唧,木蘭當(dāng)戶織。'
print(var, type(var))
newvar = list(var)
print(newvar, type(newvar))
運行結(jié)果
Hero will be , 唧唧復(fù)唧唧,木蘭當(dāng)戶織。 <class 'str'>
['H', 'e', 'r', 'o', ' ', 'w', 'i', 'l', 'l', ' ', 'b', 'e', ' ', ',', ' ',
'唧', '唧', '復(fù)', '唧', '唧', ',', '木', '蘭', '當(dāng)', '戶', '織', '。'] <class 'list'>
7.元組轉(zhuǎn)換為列表,類型改變,內(nèi)容不變
示例代碼
var = (1,2,3,4,5)
print(var, type(var))
newvar = list(var)
print(newvar, type(newvar))
運行結(jié)果
(1, 2, 3, 4, 5) <class 'tuple'>
[1, 2, 3, 4, 5] <class 'list'>
8.集合轉(zhuǎn)換為列表,類型改變,內(nèi)容不變,順序隨機(jī)
示例代碼
var = {5,3,2,4,1}
print(var, type(var))
newvar = list(var)
print(newvar, type(newvar))
運行結(jié)果
{1, 2, 3, 4, 5} <class 'set'>
[1, 2, 3, 4, 5] <class 'list'>
9.字典轉(zhuǎn)換為列表,只保留鍵,舍棄值
示例代碼
var = {5:1,3:5,2:6,4:41,1:14}
print(var, type(var))
newvar = list(var)
print(newvar, type(newvar))
運行結(jié)果
{5: 1, 3: 5, 2: 6, 4: 41, 1: 14} <class 'dict'>
[5, 3, 2, 4, 1] <class 'list'>
強(qiáng)制轉(zhuǎn)換為元組 Tuple
1.使用tuple()
2.整型不能轉(zhuǎn)換
3.浮點型不能準(zhǔn)換
4.布爾型不能準(zhǔn)換
5.復(fù)數(shù)不能準(zhǔn)換
6.字符串轉(zhuǎn)換為元組,每個字符串變成元組中的每個值
示例代碼
var = 'Hero will be , 唧唧復(fù)唧唧,木蘭當(dāng)戶織。'
print(var, type(var))
newvar = tuple(var)
print(newvar, type(newvar))
運行結(jié)果
Hero will be , 唧唧復(fù)唧唧,木蘭當(dāng)戶織。 <class 'str'>
('H', 'e', 'r', 'o', ' ', 'w', 'i', 'l', 'l', ' ', 'b', 'e', ' ', ',', ' ', '唧', '唧', '復(fù)', '唧', '唧', ',', '木', '蘭', '當(dāng)', '戶', '織', '。') <class 'tuple'>
7.列表轉(zhuǎn)換為元組,類型改變,內(nèi)容不變
示例代碼
var = [1,2,3,4,5]
print(var, type(var))
newvar = tuple(var)
print(newvar, type(newvar))
運行結(jié)果
[1, 2, 3, 4, 5] <class 'list'>
(1, 2, 3, 4, 5) <class 'tuple'>
8.集合轉(zhuǎn)換為元組,類型改變,內(nèi)容不變,順序隨機(jī)
示例代碼
var = {5,3,2,4,1}
print(var, type(var))
newvar = tuple(var)
print(newvar, type(newvar))
運行結(jié)果
{1, 2, 3, 4, 5} <class 'set'>
(1, 2, 3, 4, 5) <class 'tuple'>
9.字典轉(zhuǎn)換為元組,只保留鍵,舍棄值
示例代碼
var = {5:1,3:5,2:6,4:41,1:14}
print(var, type(var))
newvar = tuple(var)
print(newvar, type(newvar))
運行結(jié)果
{5: 1, 3: 5, 2: 6, 4: 41, 1: 14} <class 'dict'>
(5, 3, 2, 4, 1) <class 'tuple'>
強(qiáng)制轉(zhuǎn)換為集合 Set
1.使用set()
2.整型不能轉(zhuǎn)換
3.浮點型不能準(zhǔn)換
4.布爾型不能準(zhǔn)換
5.復(fù)數(shù)不能準(zhǔn)換
6.字符串轉(zhuǎn)換為集合,去掉重復(fù)的數(shù)據(jù),每個字符變成集合的每個元素,順序隨機(jī)
示例代碼
var = 'Hero will be , 唧唧復(fù)唧唧,木蘭當(dāng)戶織。'
print(var, type(var))
newvar = set(var)
print(newvar, type(newvar))
運行結(jié)果
Hero will be , 唧唧復(fù)唧唧,木蘭當(dāng)戶織。 <class 'str'>
{'w', '唧', '木', 'r', 'e', ' ', ',', '織', 'H', '蘭', 'i', 'o', '戶', 'b', '當(dāng)', '。', ',', 'l', '復(fù)'} <class 'set'>
7.列表轉(zhuǎn)換為集合,去掉重復(fù)的數(shù)據(jù),剩下的變成集合的值,順序隨機(jī)
示例代碼
var = [23,23,23,52,15,45]
print(var, type(var))
newvar = set(var)
print(newvar, type(newvar))
運行結(jié)果
[23, 23, 23, 52, 15, 45] <class 'list'>
{45, 52, 15, 23} <class 'set'>
8.元組轉(zhuǎn)換為集合,去掉重復(fù)的數(shù)據(jù),剩下的變成集合的值,順序隨機(jī)
示例代碼
var = (23,23,23,52,15,45)
print(var, type(var))
newvar = set(var)
print(newvar, type(newvar))
運行結(jié)果
(23, 23, 23, 52, 15, 45) <class 'list'>
{45, 52, 15, 23} <class 'set'>
9.字典轉(zhuǎn)換為集合,將字典的鍵轉(zhuǎn)換為集合的值,字典的值舍去
強(qiáng)制轉(zhuǎn)換為字典 Dict
1.使用dict()
2.整型不能轉(zhuǎn)換
3.浮點型不能準(zhǔn)換
4.布爾型不能準(zhǔn)換
5.復(fù)數(shù)不能準(zhǔn)換
6.字符串不能轉(zhuǎn)換
7.列表:①一級列表不能轉(zhuǎn)換②二級列表且第二級只有兩個數(shù)據(jù)可以轉(zhuǎn)換
示例代碼
var = [
[1,2],
[2,3],
[3,4],
[4,5],
[5,6]
]
print(var, type(var))
newvar = dict(var)
print(newvar, type(newvar))
運行結(jié)果
[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]] <class 'list'>
{1: 2, 2: 3, 3: 4, 4: 5, 5: 6} <class 'dict'>
8.元組①一級元組不能轉(zhuǎn)換②二級元組且第二級只有兩個數(shù)據(jù)可以轉(zhuǎn)換
示例代碼
var = ((2,3),(3,4),(4,5),(5,6))
print(var, type(var))
newvar = dict(var)
print(newvar, type(newvar))
運行結(jié)果
((2, 3), (3, 4), (4, 5), (5, 6)) <class 'tuple'>
{2: 3, 3: 4, 4: 5, 5: 6} <class 'dict'>
9.集合不能直接轉(zhuǎn)換,必須是二級容器,只能在集合中加入元組
示例代碼
var = {(2,3),(3,4),(4,5),(5,6)}
print(var, type(var))
newvar = dict(var)
print(newvar, type(newvar))
運行結(jié)果
{(4, 5), (3, 4), (5, 6), (2, 3)} <class 'set'>
{4: 5, 3: 4, 5: 6, 2: 3} <class 'dict'>