Python入門示例系列12 數據類型轉換
type() 函數
使用 type() 函數可以查看數據類型。
示例:
>>> type(123) <class 'int'> >>> type(12.3) <class 'float'> >>> type("abc") <class 'str'> >>> type([1,2,3]) <class 'list'> >>> type((1,2,3)) <class 'tuple'> >>> type({1,2,3}) <class 'set'> >>> type({'a':123}) <class 'dict'>
有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,一般情況下你只需要將數據類型作為函數名即可。
Python 數據類型轉換可以分為兩種:
隱式類型轉換 - 自動完成
顯式類型轉換 - 需要使用類型函數來轉換
隱式類型轉換
在隱式類型轉換中,Python 會自動將一種數據類型轉換為另一種數據類型,不需要我們去干預。
以下實例中,我們對兩種不同類型的數據進行運算,較低數據類型(整數)就會轉換為較高數據類型(浮點數)以避免數據丟失。
>>> type(1+3) <class 'int'> >>> type(1+0.1) <class 'float'>
顯式類型轉換
在顯式類型轉換中,用戶將對象的數據類型轉換為所需的數據類型。 我們使用 int()、float()、str() 等預定義函數來執行顯式類型轉換。
int() 強制轉換為整型:
x = int(1) # x 輸出果為 1 y = int(2.8) # y 輸出果為 2 z = int("3") # z 輸出果為 3
float() 強制轉換為浮點型:
x = float(1) # x 輸出果為 1.0 y = float(2.8) # y 輸出果為 2.8 z = float("3") # z 輸出果為 3.0 w = float("4.2") # w 輸出果為 4.2
str() 強制轉換為字符串類型:
x = str("s1") # x 輸出果為 's1' y = str(2) # y 輸出果為 '2' z = str(3.0) # z 輸出果為 '3.0'
以下幾個內置的函數可以執行數據類型之間的轉換。這些函數返回一個新的對象,表示轉換的值。
函數 | 描述 | 示例 |
---|---|---|
int(x) |
將x轉換為一個整數 |
>>> int("12") 12 >>> int(12.3) 12 |
float(x) |
將x轉換到一個浮點數 |
>>> float(123) 123.0 >>> float("12.3") 12.3 |
complex(real [,imag]) |
創建一個復數 |
>>> complex("1+2j") (1+2j)
|
str(x) |
將對象 x 轉換為字符串 |
>>> str(123) '123' >>> str(12.3) '12.3' >>> str(True) 'True' >>> str([1,2,3]) '[1, 2, 3]'
|
repr(x) |
將對象 x 轉換為表達式字符串 |
str('xxx') # str轉換后還是原來的值 # 'xxx' #repr 轉換后是在'xxx'的外層又加了一層引號 |
eval(str) |
用來計算在字符串中的有效Python表達式,並返回一個對象 |
>>>x = 4 >>> eval( '5 * x' ) 20 >>> eval('1 + 2') 3 |
tuple(s) |
將序列 s 轉換為一個元組。tuple() 可以將字符串,列表,字典,集合轉化為元組。 |
>>> a= 'www' >>> b=tuple(a) >>> b ('w', 'w', 'w') >>> a={'www':123,'aaa':234} >>> b=tuple(a) >>> b ('www', 'aaa')# 將字段轉換為元組時,只保留鍵! >>> a=set('abcd') >>> print (a) {'c', 'd', 'b', 'a'} >>> b=tuple(a) >>> b ('c', 'd', 'b', 'a')
|
list(s) |
將序列 s 轉換為一個列表。list()可以將字符串,元組,字典,集合轉化為列表。 |
>>> list('abc') ['a', 'b', 'c'] >>> list((1,2,3)) [1, 2, 3] >>> list({1,2,3}) [1, 2, 3] >>> list({'a':1,'b':2}) ['a', 'b'] |
set(s) |
轉換為可變集合。可以將字符串,列表,元組,字典轉化為集合。 |
>>> set('abc') {'c', 'b', 'a'} >>> set([1,2,3]) {1, 2, 3} >>> set((1,2,3)) {1, 2, 3} >>> set({'a':1,'b':2}) {'b', 'a'} |
dict(d) |
創建一個字典。d 必須是一個 (key, value)元組序列。 |
>>>dict() # 創建空字典 {} >>> dict(a='a', b='b', t='t')#傳入關鍵字 {'a': 'a', 'b': 'b', 't': 't'} #可迭代對象方式來構造字典
>>> dict([('one', 1), ('two', 2)]) |
frozenset(s) |
轉換為不可變集合。frozenset() 返回一個凍結的集合,凍結后集合不能再添加或刪除任何元素。 |
>>> x={1,2} >>> x.add(3) >>> x {1, 2, 3} >>> y=frozenset(x) >>> y.add(4) AttributeError: 'frozenset' |
chr(x) |
將一個整數轉換為一個字符。chr() 函數返回代表指定 unicode 的字符。 Python 2:ord() 函數是 chr() 函數(對於8位的ASCII字符串)或 unichr() 函數(對於Unicode對象)的配對函數,它以一個字符(長度為1的字符串)作為參數,返回對應的 ASCII 數值,或者 Unicode 數值。 |
>>> chr(5) '\x05' >>> chr(65) 'A' >>> chr(200) 'È' >>> chr(512) '?' >>> chr(20000) '丠' |
ord(x) |
將一個字符轉換為它的整數值。通過 ord() 轉換回 unicode。 |
>>> ord('西') 35199 >>> ord('安') 23433 >>> ord('理') 29702 >>> ord('工') 24037 |
hex(x) |
將一個整數轉換為一個十六進制字符串 |
>>> hex(123) '0x7b' >>> hex(0b111) '0x7' >>> hex(0o111) '0x49'
|
oct(x) |
將一個整數轉換為一個八進制字符串 |
>>> oct(0b111) '0o7' >>> oct(111) '0o157' >>> oct(0x111) '0o421'
|
系列目錄
REF
https://www.runoob.com/python3/python3-type-conversion.html
https://www.runoob.com/python/python-func-eval.html
https://www.runoob.com/python3/python3-func-tuple.html
https://www.runoob.com/python/python-func-dict.html