容器型別的強制轉換
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
資料型別判斷:一真則真,全假則假
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/186016.html
標籤:Python
上一篇:基礎篇_回圈結構:while 死回圈,新手容易產生三種方式
下一篇:Python七種運算子
