1. Python的數據類型
上一遍博文已經詳細地介紹了Python的數據類型,詳見鏈接Python的變量命名及數據類型。
在這里總結一下Python的數據類型:
- 字符串類型 String
- 數字類型 Number:
整形 int
浮點型 float
復數 complex
- 布爾類型 Bool列
- 表類型 List
- 元組類型 Tuple
- 字典類型 Dictionary
- 集合類型 Set
可變數據類型:列表,字典,集合
不可變數據類型:字符串,數字類型,布爾類型,元組
容器類型數據:字符串,列表,元組,字典,集合
非容器類型數據:數字類型,布爾類型
2. Python數據類型轉換
由于不同的數據類型之間是不能進行運算的,所以我們需要數據類型轉換。Python中的數據類型轉換有兩種,一種是自動類型轉換,即Python在計算中會自動地將不同類型的數據轉換為同類型數據來進行計算;另一種是強制類型轉換,即需要我們基于不同的開發需求,強制地將一個數據類型轉換為另一個數據類型。
2.1 自動類型轉換
當兩個不同類型的數據進行運算時,結果會像更高精度進行計算,精度等級:布爾 < 整型 < 浮點型 < 復數。
1
2
3
4
5
6
7
8
9
10
11
12
|
a = 10 b = True print (a + b) # 11 ''' 在和數字運算時,True轉為1,False轉為0 ''' a = 10 b = 3.14 print (a + b) # 13.14 ''' 整型與浮點型運算時,整型轉化為浮點型,結果也為浮點型 ''' |
2.2 強制類型轉換
- str( ):可以把其他類型數據轉化為字符串類型
- int( ):可以把其他類型數據轉化為整型
- float( ):可以把其他類型數據轉化為浮點型
- bool( ):可以把其他類型數據轉化為布爾類型
- list( ):可以把其他類型數據轉化為列表類型
- tuple( ):可以把其他類型數據轉化為元組類型
- dict( ):可以把其他類型數據轉化為字典類型
- set( ):可以把其他類型數據轉化為集合類型
2.2.1 其他轉字符串
所有類型都可以轉化為字符串類型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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 其他轉數字類型
數字類型之間可以相互轉換,但容器類型中只有字符串可以轉換為數字類型,并且字符串中的元素必須為純數字,否則無法轉換。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
''' 1. 數字類型之間相互轉換 ''' 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. 字符串類型轉數字類型 ''' a = '123' # str res = int (a) print (res, type (res)) # 123 <class 'int'> a = '123abc' # str res = int (a) print (res, type (res)) # 此時python會報錯,報錯類型為TypeError a = [ 1 , 2 , 3 ] # list res = int (a) print (res, type (res)) # 此時同樣會報錯,因為除了字符串以外的其他容器類型都不可以轉換成數字類型 |
其他類型轉數字類型中有一個特殊情況,就是其他類型轉布爾類型。 bool( ) 可以把其他類型轉為True或False。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
''' 1. 容器類型轉布爾類型: 容器中為空 --> 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. 數字類型轉布爾類型: int類型中,0為False,其他為真 float類型中,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 其他轉列表類型
1.數字類型是非容器類型,不能轉換為列表
2.字符串轉列表時,會把字符串中的每一個字符當作列表的元素
3.元組轉列表時,會把字符串中的每一個字符當作列表的元素
4.字典轉列表時,只保留字典中的鍵
5.集合轉列表時,結果是無序的,因為集合本身就是無序的
1
2
3
4
5
6
7
8
9
10
11
12
|
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 其他轉元組類型
其他類型數據轉元組類型與其他類型數據轉列表類型的規則相同。
1
2
3
4
5
6
7
8
9
10
11
12
|
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 其他轉集合類型
1.數字類型是非容器類型,不能轉換為集合
2.字符串轉集合時,結果是無序的
3.列表轉集合時,結果是無序的
4.元組轉集合時,結果是無序的
5.字典轉集合時,只保字典中的鍵,結果是無序的
1
2
3
4
5
6
7
8
9
10
11
12
|
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 其他轉字典類型
1.數字類型是非容器類型,不能轉換為字典
2.字符串不能轉字典類型,因為字符串不能生成二級容器
3.列表類型轉字典類型,列表必須為等長二級容器,子容器中的元素個數必須為2
4.元組類型轉字典類型,列表必須為等長二級容器,子容器中的元素個數必須為2集
5.合不能轉字典類型,因為集合不支持哈希
1
2
3
4
5
6
7
8
9
10
11
12
|
a = '123' # str res = dict (a) print (res, type (res)) # 此時python會報錯:ValueError: dictionary update sequence element #0 has length 1; 2 is required a = [[ 1 , 2 ], [ 'a' , 'b' ]] # 等長二級列表 res = dict (a) print (res, type (res)) # {1: 2, 'a': 'b'} <class 'dict'> a = (( 1 , 2 ), ( 3 , 4 ), ( 5 , 6 )) # 等長二級元組 res = dict (a) print (res, type (res)) # {1: 2, 3: 4, 5: 6} <class 'tuple'> a = {{ 1 , 2 }, { 3 , 4 }} # 等長二級集合 res = dict (a) print (res, type (res)) # 此時python會報錯:TypeError: unhashable type: 'set' |
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!
原文鏈接:https://blog.csdn.net/cheuklam/article/details/120555191