集合和字典型別 資料型別的強制轉換

2021-10-05 16:15:29 字數 4395 閱讀 9028

2.4.5 set集合型別(作用:交叉並補;特點:無序,自動去重,不可修改,不可獲取)

# 定義集合

setvar =

# 自動去重

setvar =

print

(setvar)

# 定義空集合

setvar =

setvar =

set(

)print

(setvar,

type

(setvar)

)

2.4.6 dict字典型別(特點:以鍵值對儲存資料,表面上有序,實際上無序)

​ 語法:divtvar =

"""

字典的鍵:推薦用變數命名的字串進行使用

字典的鍵和集合的值有資料型別上的要求

可雜湊的資料型別可以做字典的鍵:number(int,float,bool,complete),str,tuple

可變型別,不可雜湊(不可被應用在set中和字典的鍵):list dict set

雜湊演算法都是典型的無序特徵,目的:為了更加均勻的把資料分配到記憶體中,隨機,無序,底層用了取模類似的演算法。

python3.6版本,對字典做了優化,儲存資料的時候用的雜湊演算法

但是在拿出資料的時候,重新按照定義的順序做了排序,所以看起來有序,實際是無序的

"""# 定義空字典

dictvar =

dictvar =

dict

# 定義普通字典

dictvar =

dict

# 獲取字典值

dictvar[

'name'

]# 修改字典值

dictvar[

'name']=

"jack"

# 字典的鍵有一定要求

dictvar =

1. number(int,float,bool,complex)型別
整型:-5 ~ 正無窮範圍內的值相同  id 值一致

var1 = 1

var2 = 2

浮點數:非負數範圍內的兩個值相同時 id 值一致

var1 = 1.0

var2 = 2.0

布林值:值相同的情況下,id一致

var1 = true

var2 = false

print(id(var1),id(var2))

複數對於 實數+虛數 這種結構中永不相同(只有虛數的情況例外)

intvar1 = 1+2j

intvar2 = 1+2j

intvar3 = 1j

intvar4 = 1j

print(id(intvar1),id(intvar2),id(intvar3),id(intvar4))

2. 容器型別
字串和空元組相同的情況下,位址相同

var1 = "你"

var2 = "你"

var3 = ()

var4 = ()

print(id(var1),id(var2),id(var3),id(var4))

列表,元組,字典,集合無論什麼情況id值都不同(空元組例外)

listvar1 = [1,2,3]

listvar2 = [1,2,3]

setvar3 =

setvar4 =

dictvar5 =

dictvar6 =

print(id())

1. numbei(int,bool,float,complex)強制型別轉換
型別轉換方法:int(),bool(),float(),complex()

強制轉換整型(純數字型別字串,浮點型,布林型,整型)

var1 = int(1.0)

var2 = int('12')

var3 = int(false)

var4 = int(12)

強制轉換浮點型(純數字型別字串,浮點型,布林型,整型)

var1 = float(1.1)

var2 = float('12')

var3 = float(false)

var4 = float(12)

強制轉換布林型(純數字型別字串,浮點型,布林型,整型)

var1 = bool(1.1)

var2 = bool('12')

var3 = bool(false)

var4 = bool(12)

強制轉化布林型為假的十種情況

0 0.0 false 0j () {} set() '' none

強制轉換成複數(純數字字串,浮點型,布林型,整形)

var1 = complex(1.1)

var2 = complex('12')

var3 = complex(false)

var4 = complex(12)

2. 自動型別轉換number(int float bool complex)

​ 轉換原則:資料精度預設從低到高轉換:bool int float complex

bool + int     布林型別 + int整型 = 整型

ret = true + 12

bool + float 布林型別 + float浮點型 = 浮點型

ret = true + 1.2

bool + complex 布林型別 + complex複數 = 複數

ret = true + 1+2j

int + float int整型 + float浮點型 = 浮點型

ret = 1 + 1.1

int + complex int整型 + complex複數 = 複數

ret = 1 + 1+2j

float + complex float浮點型 + complex複數 = 複數

ret = 1.1 + 1+2j

3. 容器型別的強制轉換(str tuple list set dict)
強制轉化成str字串(number型別資料和容器型別資料都可以轉化)

ret = str([1,2])

強制轉化成元組(自身轉化無變化)

ret = tuple("sfaf") 字串強制轉化成元組會拆分成單個字元 ("s","f","a","f")

ret = tuple([1,2,3]) 列表強制轉化成元組表面上看就是換了外面的括號

ret = tuple() 集合強制轉化成元組表面上看就是換了外面的括號

ret = tuple() 字典強制轉化成元組只會保留字典的鍵以元組的方式呈現

number資料型別不能強制轉化成元組

強制轉化成列表(自身轉化無變化)

ret = list("sfaf") 字串強制轉化成列表會拆分成單個字元 ("s","f","a","f")

ret = list((1,2,3)) 元組強制轉化成列表從表面上看就是換了外面的括號

ret = list() 集合強制轉化成列表從表面上看就是換了外面的括號

ret = list() 字典強制轉化成列表只會保留字典的鍵以元組的方式呈現

number資料型別不能強制轉化成列表

強制轉化成集合(自身轉化無變化)

ret = set("sfaf") 字串強制轉化成集合會被拆分成單個字元並自動去重 ("s","f","a")

ret = set([1,2,3]) 列表強制轉化成集合會自動去重,從表面上看外層括號會變成{}

ret = set((1,2,3)) 元組強制轉換成集合會自動去重,從表面上看外層括號會變成{}

ret = set() 字典強制轉化成列表只會保留字典的鍵以集合的方式呈現,並會自動去重

強制轉化成字典(自身轉化無變化)

注:強轉成字典時,必須是等長的二級容器,元素個數為2

外層可以是列表、元組或集合,裡面的容器是元組或者列表

ret = [(1,2,),[1,2]]

ret = ((1,2,),[1,2])

ret =

如果裡面出現集合(外層不是set集合{}),語法上是允許的,但有侷限性

ret = ([1,2],)

如果裡面出現字串,語法上是允許的,但有侷限性,字串的長度只能是2

ret = ([1,2],'as')

4. 二級容器
二級列表

ret = [1,[2,3]]

二級元組

ret = (1,(2,3,),)

二級集合

ret = }

二級字典

ret = }

多級容器就是巢狀使用

python 資料型別 字典和集合

字典 乙個key值 對應乙個value值 定義mydict1 mydict2 dict 取值 mydict1 name a name 1 aa get key,0 取值 mydict1.get name a 賦值 mydict2 ee aaa in 是否在裡面 name in mydict1 tru...

資料型別之元組,字典,集合

tuple 元組就是乙個不可變的列表 基本使用 1 用途 當我們需要記錄多個同種屬性的值,並且只有讀的需求沒有改的需求時,應該用元組 2 定義方式 在 內用逗號分隔開多個任意型別的元素 當元組內只有乙個元素時,必須加逗號 t tuple egon 資料型別轉換 tuple 括號內可以使字串 列表 字...

容器型別的強制轉換和字典強轉

var1 我愛你,就像老鼠愛大公尺 var2 1,2,3 var3 好 嗎 我 他 var4 var5 特點 在原資料的兩邊套上引號,表達字串的型別 可以強轉一切資料 res str var2 res str var3 res str var4 print res type res 原型化輸出字串 ...