#1. id == is:# 01 今日內容大綱
1. is ==id 用法
2. **塊
3. 同一**塊下的快取機制
4. 不同**塊下的快取機制(小資料池)
5. 總結
6. 集合(了解)
7. 深淺copy
## 03 具體內容
1. id is ==```python
#id 身份證號
#i = 100
#s = 'alex'
#print(id(i))
#print(id(s))
#== 比較的是兩邊的值是否相等
#l1 = [1, 2, 3]
#l2 = [1, 2, 3]
#print(l1 == l2)
#s1 = 'alex'
#s2 = 'alex '
#print(s1 == s2)
#is 判斷的是記憶體位址是否相同
#l1 = [1, 2, 3]
#l2 = [1, 2, 3]
#print(id(l1))
#print(id(l2))
#print(l1 is l2)
s1 = '
alex
's2 = '
alex
(id(s1))
(id(s2))
print(s1 is
s2)
#id 相同,值一定相同
#值相同,id不一定相同
```2. **塊
+**塊:我們所有的**都需要依賴**塊執行。
+乙個檔案就是乙個**塊。
+互動式命令下一行就是乙個**塊。
3. 兩個機制: 同乙個**塊下,有乙個機制。不同的**塊下,遵循另乙個機制。
4. 同乙個**塊下的快取機制。
+前提條件:同乙個**塊內。
+ 機制內容:pass
+適用的物件: int bool str
+具體細則:所有的數字,bool,幾乎所有的字串。
+優點:提公升效能,節省記憶體。
5. 不同**塊下的快取機制: 小資料池。
-前提條件:不同**塊內。
- 機制內容:pass
-適用的物件: int bool str
- 具體細則:**-5~256數字**,bool,滿足規則的字串。
-優點:提公升效能,節省記憶體。
```python
#i1 = 1000
#i2 = 1000
#i3 = 1000
#l1 = [1,2,3]
#l2 = [1,2,3]
#print(id(l1))
#print(id(l2))
#print(id(i1))
#print(id(i2))
#print(id(i3))
i = 800i1 = 800s1 = '
hfdjka6757fdslslgaj@!#fkdjlsafjdskl;fjds中國
's2 = '
hfdjka6757fdslslgaj@!#fkdjlsafjdskl;fjds中國
'print(i is
i1)
print(s1 is
s2) ```
1. 總結:+
1. 面試題考。
2. 回答的時候一定要分清楚:同乙個**塊下適用乙個快取機制。不同的**塊下適用另乙個快取機制(小資料池)
3. 小資料池:數字的範圍是-5~256.
4. 快取機制的優點:提公升效能,節省記憶體。
2. python基礎資料型別之:集合 set。容器型的資料型別,它要求它裡面的元素是不可變的資料,但是它本身是可變的資料型別。集合是無序的。{}。
+集合的作用:
+列表的去重。
+關係測試: 交集,並集,差集,.....
+ pass
```python
#集合的建立:
#set1 = set()
#set1 =
#print(set1)
#空集合:
#print({}, type({})) # 空字典
#set1 = set()
#print(set1)
#集合的有效性測試
#set1 = }
#print(set1)
#set1 = #增:
#add
#set1.add('xx')
#print(set1)
#update迭代著增加
#set1.update('fdsafgsd')
#print(set1)#刪
#remove
#remove 按照元素刪除
#set1.remove('alexsb')##
print(set1)
#pop 隨即刪除
#set1.pop()
#print(set1)
#變相改值
#set1.remove('太白金星')
#set1.add('男神')
#print(set1)
#關係測試:***#交集
#set1 =
#set2 =
#print(set1 & set2)
#並集:
#print(set1 | set2)
#差集 -
#print(set1 - set2)
#反交集
#print(set1 ^ set2)#子集
#set1 =
#set2 =
## print(set1 < set2)##
# 超集
#print(set2 > set1)
#列表的去重 ***
#l1 = [1,'太白', 1, 2, 2, '太白',2, 6, 6, 6, 3, '太白', 4, 5, ]
#set1 = set(l1)
#l1 = list(set1)
#print(l1)
#用處:資料之間的關係,列表去重。
```3. 深淺copy(面試會考)
```python
#賦值運算
#l1 = [1, 2, 3, [22, 33]]
#l2 = l1##
print(l1)
#print(l2)
#淺copy
#l1 = [1, 2, 3, [22, 33]]
#l2 = l1.copy()##
print(l1,id(l1))
#print(l2,id(l2))
#l1 = [1, 2, 3, [22, 33]]
#l2 = l1.copy()##
print(id(l1[-1]))
#print(id(l2[-1]))
#print(id(l1[0]))
#print(id(l2[0]))
#print(l1)
#print(l2)
#l1 = [1, 2, 3, [22, 33]]
#l2 = l1.copy()
#l1[0] = 90
#print(l1)
#print(l2)
#深copy
#import copy
#l1 = [1, 2, 3, [22, 33]]
#l2 = copy.deepcopy(l1)
## print(id(l1))
## print(id(l2))##
print(l1)
#print(l2)
#相關面試題;
#l1 = [1, 2, 3, [22, 33]]
#l2 = l1[:]##
print(l1)
#print(l2)
#淺copy: list dict: 巢狀的可變的資料型別是同乙個。
#深copy: list dict: 巢狀的可變的資料型別不是同乙個 。
```#
# 04 今日總結
+ id is ==三個方法要會用,知道是做什麼的。
+回答的時候一定要分清楚:同乙個**塊下適用乙個快取機制。不同的**塊下適用另乙個快取機制(小資料池)
+ 小資料池:數字的範圍是-5~256.
+快取機制的優點:提公升效能,節省記憶體。
+集合:列表去重,關係測試。
+ 深淺copy:理解淺copy,深淺copy,課上練習題整明白。
2. **塊:乙個檔案,互動式命令一行就是乙個**塊。
3. 同一**塊下快取機制(字串駐留機制):
+ 所有數字,bool 幾乎所有的字串
+ 優點:提公升效能,節省記憶體空間。
4. 不同**塊的快取機制(小資料池):在記憶體中開闢兩個空間,乙個空間儲存-5~256的int,乙個空間儲存一定規則的字串,如果你的**中遇到了滿足條件的資料,直接引用提前建立的。
+ -5~256 int,bool,滿足一定規則的字串。
+ 優點:提公升效能,節省記憶體空間。
5. 集合:列表去重,關係測試 交並差。
6. 深淺copy:
+ 淺copy:在記憶體中開闢乙個新的空間存放copy的物件(列表,字典),但是裡面的所有元素與被copy物件的裡面的元素共用乙個。
copy與mutableCopy的深淺拷貝
在討論深淺拷貝之前,先明確一下它們的含義 對於strong修飾的物件,都是淺拷貝,僅拷貝物件的位址,使得物件的引用計數加1 而copy和mutablecopy主要分為集合類物件和非集合類物件來討論,先給一張圖。mutable 可變 immutable 不可變 上圖總結如下 對於集合類物件,在深拷貝時...
ios學習路線 Objective C 深淺拷貝
非容器類物件 nsstring str origin string nsstring strcopy str copy nsmutablestring mstrcopy str mutablecopy nslog array1 p array1 nslog arraycopy1 p arraycop...
iOS strong copy關鍵字之深淺拷貝
大家都知道在定義屬性時會使用關鍵字nonatomic,strong,copy,weak,assign,但是關於copy關鍵字到底掌握多少呢,下面這個寫法會有什麼問題嗎?列印結果 內容相同,記憶體位址是同乙個位址,說明這是指標指向了同一位址而已 這是的copy即是淺拷貝,只是拷貝了指標 注意 上面這種...