小數據池——緩存機制(駐留機制),只是一種規格,不會實際的開闢一個空間python
# a = 10 # b = 10 # print(a == b)
# a = 10 # b = 10 # print(a is b) is判斷基於內存地址進行判斷 # print(id(a)) # print(id(b))
小數據池支持的對象也是:數字,字符串,布爾值面試
乘法的時候總長度不能超過20*****緩存
乘法的時候中文,特殊符號乘以0app
小數據池的驗證方法,必須脫離代碼塊才能進行驗證函數
先執行代碼塊的規則,當代碼塊的規則不符合的時候再執行小數據池的規則(駐留機制)code
# a = -2.5 * 2 # b = -2.5 * 2 # print(id(a)) # print(id(b)) # print(a is b) # True # a = "alex你好" *2 # b = "alex你好" *2 # print(id(a)) # print(id(b)) # print(a is b) # True
一個文件,一個函數,一個類,一個模塊,終端中每一行是一個代碼塊對象
支持的數據類型:數字,字符串,布爾值索引
數字在作乘法的時候範圍: -5——256,不能使用浮點數 *****內存
乘法的時候總長度不能超過20 *****rem
乘法的時候中文,特殊符號乘以1或0
面試必問:賦值,淺拷貝,深拷貝
賦值:
# lst = [1,2,3,[5,6,7]] # lst1 = lst # print(lst1) # print(lst) # lst[-1].append(8) # print(lst1) # print(lst)
拷貝:複製
淺拷貝的時候,只會開闢一個新的容器列表,其餘元素使用的都是源列表中的元素
淺拷貝的時候只拷貝第一層元素
規則:
修改原列表裏面的總體元素只有原列表改變,若是修改原列表裏面的總體元素裏面的元素,則兩個都改變
修改新列表裏面的總體元素只有新列表改變,若是修改新列表裏面的總體元素裏面的元素,則兩個都改變
若是隻是修改原列表或者新列表的總體元素,則改變的那個列表改變,另一個不改變
# lst1 = lst.copy() # 新開闢一個空間給lst1 # # print(lst[-1]) # print(lst1[-1]) # # print(id(lst1[-1])) # print(id(lst[-1])) # 淺拷貝的時候,只會開闢一個新的容器列表,其餘元素使用的都是源列表中的元素 # lst = [1,2,3,[5,6,7]] # lst1 = lst.copy() # lst1[-1].append(8) # print(lst) # print(lst1) # lst = [1,2,3,[5,6,7]] # lst1 = lst.copy() # lst[3] = 567 # print(lst1) # print(lst) # lst = [1,2,3,4,[5,6,7,[8,9]]] # lst1 = lst.copy() # [1,2,3,4,[5,6,7,[8,9]],10] # lst1.append(10) # print(lst) # print(lst1) # lst = [1,2,3,4,[5,6,7,[8,9]]] # lst1 = lst.copy() # lst1[-1][-1] = "56" # print(lst) # [1,2,3,4,[5,6,7,[8,9]]] # print(lst1) # ["56",2,3,4,[5,6,7,[8,9]]] # lst = [[1,2,],90,6,7,[5,6]] # lst1 = lst.copy() # lst1[-1] = 8 # print(lst) # print(lst1) # dic = {"alex":[1,2,3,[5,6]]} # dic1 = dic.copy() # dic["alex"][0] = "56" # print(dic) # print(dic1)
須要導入:import copy
深拷貝開闢一個容器空間(列表),不可變數據類型公用,可變數據類型(再次開闢一個新的空間),空間裏的值是不可變的值進行共用的,可變的數據類型再次開闢空間
# import copy #導入 # lst = [1,2,3,[5,6,7]] # lst1 = copy.deepcopy(lst) # 深拷貝 # lst[-1].append(8) # print(lst) # print(lst1) # lst = [1,2,3,[5,6,7,[8,10,9]]] # import copy # lst1 = copy.deepcopy(lst) # print(id(lst[-1][-1])) # print(id(lst1[-1][-1]))
集合 ——set 無序的——不支持索引
沒有值的字典,自然去重
相似字典的鍵,可變類型不能放:列表、字典、集合不能放
# 定義集合 # s = {1,"alex",False,(1,2,3),12,1,12,4,6,32,2,4} # print(s)
# s = {1,2,3,4} # s.add("67") #只能添加一個 # print(s) # s.update("今天") # 迭代添加 # print(s)
# s = {1,2,3,4} # print(s.pop()) # pop有返回值 # print(s) # s.remove(3) # 指定元素刪除 # print(s) # s.clear() # 清空 -- set() 空集合 # print(s)
先刪除再添加
for循環
# for i in {1,2,3}: # print(i)
打印的時候是無序的,循環的是有序的
交集:&
並集: |
差集: -
反交集:^
父集(超集): >
子集 : <099
frozenset() : 凍結集合
# s1 = {1,2,3,4,5,6,7} # s2 = {5,6,7,1} # print(s1 & s2) # 交集 # print(s1 | s2) # 並集 # print(s1 - s2) # 差集 # print(s1 ^ s2) # 反交集 # print(s1 > s2) # 父集(超集) # print(s1 < s2) # 子集 # print(frozenset(s1)) # 凍結集合 更不經常使用 # dic = {frozenset(s1):1} # print(dic)
面試題:
# 面試題: # lst = [1,2,1,2,4,2,45,3,2,45,2345,] # print(list(set(lst)))