元組是不可變資料型別
建立乙個元組:
tuple1=(1
,2,3
,11,22
,33)
元組也可以切片
如果元組不是乙個空元組,那裡邊必須有逗號:
a=(10
,)
元組的拆包
tuple1=(1
,2)a,b=
tuple
print
(a,b)
檢視結果
1
2
如果有多個元素,可以使用*來拆包,乙個字母代表乙個,查表後的型別和再元組中的一樣
加上星號則會取剩下的所有的,因此只能有乙個星號,拆後會放在列表裡。
tuple2=(1
,2,3
,4,5
,6,7
,8,9
)a,*b=tuple2
print
(a,b)
1[2
,3,4
,5,6
,7,8
,9]
除了元組,字串和列表也可以拆包
建立乙個字典
dic=
#建立乙個空字典
dic1=
#建立乙個字典
dic2=
通過dict去建立列表
dic=
dict
("a"
="1"
,"b"
="2"
)
通過key來獲取value:dict[key] 如果key值不存在,就會報錯
dict.get(key) 如果key不存在,會返回none
字典的長度是看鍵值對的個數
in和not in 是看key是否再字典中
字典的修改:dict[key]=***
字典新增鍵值對:dict.setdefault( key ,value ) ** 如果字典中已經存在key,則不會修改**
字典與字典合併:dict1.update(dict2) 把 dict2新增到dict1中
dict.popitem():隨即刪除乙個鍵值對,一般是第乙個
dict.pop(key):根據key來刪除鍵值對
dict.clear():清空字典
li1=[2
,212,1
,132,13
,[1,
2,3]
]li2=[2
,212,1
,132,13
,[1,
2,3]
]li3=li1.copy(
)print(id
(li1),id
(li2),id
(li3)
)print(id
(li1[5]
),id(li2[5]
),id(li3[5]
))
檢視id
發現li1和li3中列表的id是相同的
2021412027840
2021412147136
2021412133696
2021410721536
2021412134784
2021410721536
在淺拷貝的時候,li1中的列表被建立,然後在,copy的時候直接被拿過去使用,而li2中的列表是重新建立的。
淺拷貝不能拷貝第一層的資料
import copy
li1=[2
,212,1
,132,13
,[1,
2,3]
]li2=[2
,212,1
,132,13
,[1,
2,3]
]li3=copy.deepcopy(li1)
print(id
(li1),id
(li2),id
(li3)
)print(id
(li1[5]
),id(li2[5]
),id(li3[5]
))
深拷貝相當於全部更新建立
1473024277376
1473025409856
1473025410624
1473024280064
1473025410560
1473025409600
遍歷字典
dict1=
for k in dict1.key():
#遍歷key值
for v in dict1.value():
#遍歷value值
深拷貝和淺拷貝
淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝,如 class a a private int data int main 這一句b a 就是淺拷貝,執行完這句後b.data 5 如果物件中沒有其他...
淺拷貝和深拷貝
以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 例如 已知class a,class b void func a a void func a a func b b 此時函式對b的操作是呼叫拷貝建構函式後的臨時拷貝物件。多數傳指標 乙個物件以值傳遞的方式從函式返回 如 return b...
深拷貝和淺拷貝
ios提供了copy和mutablecopy方法,顧名思義,copy就是複製了乙個imutable的物件,而mutablecopy就是複製了乙個mutable的物件。以下將舉幾個例子來說明。1 系統的非容器類物件 這裡指的是nsstring nsnumber等等一類的物件。nsstring stri...