Python容器型別資料的轉換
阿新 • • 發佈:2020-10-22
容器型別的強制轉換
str強制將資料轉換成字串
str可以轉換所有的資料型別, 在當前的資料型別兩邊套上引號
var = [1, 2, 3]
res = str(var)
# 結果:'[1, 2, 3]' <class 'str'>
print(repr(res), type(res))
repr():原型化輸出字串
list強制將資料轉換成列表
- 如果原資料型別是字串:把字串中的每個元素單獨拿出來,作為列表中的新元素使用
- 如果原資料型別是字典:只保留字典中的鍵,忽略字典的值
- 如果原資料型別是其他容器資料:直接在原資料型別兩邊換上[]
var = "abc123" res = list(var) # 結果:['a', 'b', 'c', '1', '2', '3'] <class 'list'> print(res, type(res)) var = {"a": 1, "b": 2, "c": 3} res = list(var) # 結果:['a', 'b', 'c'] <class 'list'> print(res, type(res)) var = (123,456,"abc") res = list(var) # 結果:[123, 456, 'abc'] <class 'list'> print(res, type(res))
tuple強制將資料轉換成元組
- 如果原資料型別是字串:把字串中的每個元素單獨拿出來,作為元組中的新元素使用
- 如果原資料型別是字典:只保留字典中的鍵,忽略字典的值
- 如果原資料型別是其他容器資料:直接在原資料型別兩邊換上()
var = "abc123" res = tuple(var) # 結果:('a', 'b', 'c', '1', '2', '3') <class 'tuple'> print(res, type(res)) var = {"a": 1, "b": 2, "c": 3} res = tuple(var) # 結果:('a', 'b', 'c') <class 'tuple'> print(res, type(res)) var = {123,456,"abc"} res = tuple(var) # 結果:(456, 123, 'abc') <class 'tuple'> print(res, type(res))
set強制將資料轉換成集合
- 如果原資料型別是字串:把字串中的每個元素單獨拿出來,作為集合中的新元素使用
- 如果原資料型別是字典:只保留字典中的鍵,忽略字典的值
- 如果原資料型別是其他容器資料:直接在原資料型別兩邊換上{}
var = "abc123" res = set(var) # 結果:{'3', '2', 'c', 'a', '1', 'b'} <class 'set'> print(res, type(res)) var = {"a": 1, "b": 2, "c": 3} res = set(var) # 結果:{'c', 'a', 'b'} <class 'set'> print(res, type(res)) var = [123,456,"abc"] res = set(var) # 結果:{456, 123, 'abc'} <class 'set'> print(res, type(res))
擴充套件
強轉空資料時,預設轉換成當前資料型別的一個值
res = ()
# 結果:() <class 'tuple'>
print(res, type(res))
dict強制將資料轉換成字典
- 要求: 必須是等長的二級容器,並且裡面的元素個數只能是2個
- 外層可以是列表,元組或集合,裡層是列表或者元組的等長二級容器
外層是列表
# 外層是列表,裡層是列表或者元組
lst = [["a", 1], ("b", 2)]
dic = dict(lst)
# 結果:{'a': 1, 'b': 2} <class 'dict'>
print(dic, type(dic))
外層是元組
# 外層是元組,裡層是列表或者元組
tup = (["a", 1], ("b", 2))
dic = dict(tup)
# 結果:{'a': 1, 'b': 2} <class 'dict'>
print(dic, type(dic))
外層是集合
# 外層是集合,裡層是元組
setvar = {("a", 1), ("b", 2)}
dic = dict(setvar)
print(dic, type(dic))
# 結果1:{'a': 1, 'b': 2} <class 'dict'>
# 結果2:{'b': 2, 'a': 1} <class 'dict'>
集合的特徵:無序,自動去重
字典的鍵和集合的值有資料型別上的要求:
不可變的型別(允許的類型範圍):Number(int、float、complex、bool)、str、tuple
可變的型別(不允許的型別):list、set、dict
例外1
"""
外層是列表或元組,裡層放集合
可以實現,但不推薦使用,
因為集合無序,達不到想要的目的
"""
lst = [["a", 100], {"b", "250"}]
dic = dict(lst)
print(dic)
# 結果1:{'a': 1, 'b': '250'}
# 結果2:{'a': 1, '250': 'b'}
例外2
"""
外層是列表,元組或集合,裡層放字串
字串長度只能是2位,有極大的侷限性,不推薦使用
"""
lst = ["a1","b2"]
# lst = ["a11","b22"] #Error
dic = dict(lst)
# 結果:{'a': '1', 'b': '2'}
print(dic)
擴充套件:等長二級容器
外面是容器,裡面的元素也是容器,且元素個數相同
lst = [(1, 2, 3), [4, 5, 6], {7, 8, 9}]
型別判斷
使用方法一
isinstance(資料,型別)
- 如果該資料是這個型別,返回True
- 反之,返回False
- 型別: int、float、complex、bool、str、list、tuple、set、dict
n = 123
res = isinstance(n, int)
print(res) # True
n = "123"
res = isinstance(n, int)
print(res) # False
使用方法二
isinstance( 資料, (型別1,型別2,型別3...) )
- 如果該資料在所對應的型別元組當中,返回True
- 反之,返回False
- 型別: int、float、complex、bool、str、list、tuple、set、dict
n = 123
res = isinstance(n, (float, complex, int))
print(res) # True
n = "123"
res = isinstance(n, (float, complex, int))
print(res) # False
資料型別判斷:一真則真,全假則假