==哦按段兩邊你的內容是否相等python
a=10面試
b=10緩存
print(a==b)app
is 是函數
a=10code
b=10索引
print(a is b) is 判斷機遇內存地址就行判斷內存
print(id (a))rem
print(id(b))字符串
小數據池的數字範圍:-5~256
代碼塊:一個py文件 一各函數 一個類 一個模塊,終端中每一行都是一個代碼塊
支持三種數據類型
數字:在同一個代碼塊下,只要內容相同就採用相同的內存地址(-5之後就不是)
數字在作乘法的時候範圍-5~256 1252 在 130 2 不行
字符串
在贊成代碼塊下,只要內容相同就採用相同的內存地址
乘法的時候總長度不能超過20
乘法的時候中文,特殊符號成以1或0
布爾值
內容相同採用統一內存地址
小數據池
數字 -5~256
字符串
在統一代碼塊下,只要內容相容就採用相同的內存地址
乘法的時候總長度不能超過20
乘法的時候中文特殊符號乘以0
布爾值
小數據池的驗證發放,必須脫離代碼塊才能進行驗證
cmd終端查看
執行順序
先執行代碼塊的規則,再進行小數據池的規則--駐留機制
==判斷等號兩邊的值是否相等
is 判斷兩邊的內存地址是否相等
lst=[1,2,3,4,[5,6]] lst1=lst print(lst1) print(lst) print(id(lst1)) print(id(lst))
淺拷貝 ,淺拷貝的時候只會開闢一個新的容器列表其餘元素使用的都是源列表中的元素.
lst=[1,2,3,[4,5,6]] lst1=lst.copy s.append(7) print(lst) print(lst1) 結果 [1,2,3,[4,5,6],7] [1,2,3,[4,5,6]] 2. s[-1].append(7) print(lst) print(lst1) 結果 [1,2,3,[4,5,6,7]] [1,2,3,[4,5,6,7]] #總結 #淺拷貝的時候只拷貝第一層元素 #淺拷貝在修改第一層元素(不可變數據類型)的時候,拷貝出來的新列表不進行改變 #淺拷貝在替換第一層元素(不可變數據類型)的時候,拷貝出來的新列表不進行改變 #淺拷貝在修改第一層元素中的元素(第二層)的時候,拷貝出來的新列表進行修改
import copy #導入 lst=[1,2,3,[4,5,6,]] lst1=copy.deepcopy(lst) #深拷貝 lst[-1].append(7) print(lst) print(lst1) #結果 [1, 2, 3, [4, 5, 6, 7]] [1, 2, 3, [4, 5, 6]] 2 lst.append(7) print(lst) print(lst1) #結果 [1, 2, 3, [4, 5, 6], 7] [1, 2, 3, [4, 5, 6]] #深拷貝:深拷貝開闢一個容器空間(列表),不可變數據公用,可變數據數據類型(再次開闢一個新的空間),空間裏的值是不可變的數據進行公用的,可變的數據類型再次開闢空間
多個變量名指向同一個內存地址,一個變量對其進行操做,其餘變量查看時都變更
lst[1:10]-- 是淺拷貝,淺拷貝只拷貝第一層元素,修改第一層元素是,新開闢的不進行改變
不可變的數據類型共用,可變數據類型從新開闢一個空間,對源數據進行修改,深拷貝的內容不進行改變
可變類型新拷貝的變
不可變的新拷貝不變
集合#沒有值的字典 無需--不支持索引
s=[1,2,3,1,33,56,3,4] print(list(set(s))) 一行代碼去重複 先轉成集合去重再變成列表
s={1,2,3,4}
print(s)
{1,2,3,4,"66"}
print(s)
{1,2,3,4,"今","天"}
print(s.pop()) #pop有返回值 print(s) s.remove(3) #指定元素刪除 s.clear() #清空--set() 空集合
先刪在加 s.renmove(3) s,add(2) print(s)
for i in {1,2,3}: print(i)
s2={2,3,4}
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)
不免紕漏 歡迎交流