一.元組
-->元組的創(chuàng)建
tup = (1,2,3,4,5)
print(tup,type(tup))
(1, 2, 3, 4, 5)
print(tup[1])? ? //同列表索引值,元組也有其屬性
2
tup[0] = 10? ? ? ? //元組是不可變序列,不可修改,否則報錯
print(tup)
TypeError: 'tuple' object does not support item assignment
-->如果元組非空,必須有一個逗號
tup1 =10,
tup2 =True,
tup3 ='hello',
print(tup1)
print(tup2)
print(tup3)
(10,)
(True,)
('hello',)
tup =10,20,30,40
print(tup)
(10, 20, 30, 40)
a,s,d,f = tup
-->元組的解包 變量值與元組中元素值一樣
1.錯誤示例
tup4 = 1,2,3,4
a,b = tup4
print('a = ',a)
?print('b = ',b)
valueError: too many values to unpack (expected 2)
print('a = ',a)
print('s = ',s)
print('d = ',d)
print('f = ',f)
a =? 10
s =? 20
d =? 30
f =? 40
-->變量值與元組中元素值不一樣,變量前添加*,那么這個變量將剩余元素保存在一個列表中,這個變量不可以是中間的變量,*第一個變量? ? *最后一個變量? 這兩種都行
tup5 =1,2,3,4,5
a,b,*c = tup
print('a = ',a)
print('b = ',b)
print('c = ',c)
a =? 10
b =? 20
c =? [30, 40]
二.可變對象
可變對象:
????????????????id()?????????type()????????? value()
-->改對象里面的值,不改變變量指向的對象
a = [1,2,3]
print('修改前:',a,id(a))
a[0] =10
print('修改后:',a,id(a))
修改前: [1, 2, 3]2243795378696
修改后: [10, 2, 3]2243795378696
--> 改變量:修改id ,指向了不同的對象?
b = [1,2,3]
print('修改前:',b,id(b))
b = [4,5,6]
print('修改前:',b,id(b))
修改前: [1, 2, 3] 2343263167048
修改前: [4, 5, 6] 2343264392328
該變量:修改id ,指向了不同的對象
實(shí)例:
a = [1,2,3]
b = a????#此時ab指向相同的對象
b[0] =10? #修改對象里面的值,不改變對象id
print(a,id(a))
print(b,id(b))
?[10, 2, 3] 2188658106952
?[10, 2, 3] 2188658106952
a = [1,2,3]
b = a????#此時ab指向相同的對象
b = [10,2,3]????#修改變量b,此時對象改變了,ab指向不同的對象
print(a,id(a))
print(b,id(b))
?[1, 2, 3] 1753516414088
?[10, 2, 3] 1753515188808
三.字典的引入
-->字典:dict
字典是由鍵值對組成 key : value? key:一般使用字符串value : 可以使用任意類型
-->字典的創(chuàng)建
1.直接創(chuàng)建
d ={'name':'小黑','age':6,'color':'black'}
print(d,type(d))
{'name': '小黑', 'age': 6, 'color': 'black'}
2.通過dict函數(shù)創(chuàng)建字典
d = dict(name = '小黑',age = 6,color = 'black')
print(d,type(d))
{'name': '小黑', 'age': 6, 'color': 'black'}
-->dict函數(shù)可以將一個包含雙值子序列轉(zhuǎn)化為字典
注意:雙值子序列:序列中有兩個元素,每個元素也是序列
d = dict([('name','小黑'),('age',6)])
print(d,type(d))
{'name': '小黑', 'age': 6}
-->字典元素的獲取
1.普通獲取? get函數(shù)獲取
d ={'name':'小黑','age':6,'color':'black'}
a = 'age'
b = 'sex'
print(d[a])
print(d[b])
6
KeyError: 'sex'
print(d.get('color'))???????? black
print(d.get('sex'))???????????? None????
2.get(key,[default])函數(shù)也可以獲取字典中的value
? ? -->如果key不存在,返回none
? ? -->default 也可以指定一個默認(rèn)值,作為第二個參數(shù),如果獲取不到這個key,則返回默認(rèn)值
print(d.get('name1','key不存在'))? ? //字典中沒有name1這個key,顯示默認(rèn)值,不會報錯
key不存在
四.字典的使用
字典的操作
-->修改
d ={'name':'小黑','age':6,'color':'black'}
# d['color'] = 'white'
# print(d['color'])? #white
-->增加
d ={'name':'小黑','age':6,'color':'black'}
d['sex'] = '未知'
print(d)
{'name': '小黑', 'age': 6, 'color': 'black', 'sex': '未知'}
d ={'name':'小黑','age':6,'color':'black'}
d.setdefault('name','小白')
print(d)
{'name': '小黑', 'age': 6, 'color': 'black'}? ? ? ? // 字典中含有這個key,不改變字典
d.setdefault('sex','white')
print(d)
{'name': '小黑', 'age': 6, 'color': 'black', 'sex': 'white'}? ? ? ? // 字典中沒有這個key,即添加k-v
-->刪除
? ? 1.del? 指定元素
d = {'a':1,'b':2,'c':3,'d':4}
del d['b']
print(d)
{'a': 1, 'c': 3, 'd': 4}
? ? 2.popitem? 隨即刪除一個k-v,有返回值
d = {'a':1,'b':2,'c':3,'d':4}
r = d.popitem()? ? ? ? //變量r用來接收返回值
print(d,r)
{'a': 1, 'c': 3} ('d', 4)
? ? 3.pop()也是刪除指定元素,但是返回值是對于元素的額value??注意返回值與popitem不同
d = {'a':1,'b':2,'c':3,'d':4}
res = d.pop('d')
re = d.pop('w')
print(d,res)????????{'a': 1, 'b': 2, 'c': 3} 4
print(d,re)????????KeyError: 'w'
? ? -->update
d1 = {'a':1,'b':2,'c':3,'d':4}
d2 = {'e':5,'f':6,'g':7}
d1.update(d2)
print(d1)
print(d2)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7}
{'e': 5, 'f': 6, 'g': 7}
? ? -->clear()
d1 = {'a':1,'b':2,'c':3,'d':4}
print(d1)
{}
五.字典的簡單案例
a = {'name':'123','data':{'result':[{'src':'python1'},{'src':'python2'},{'src':'python3'}]}}
i =0
while i <3:
????print(a['data']['result'][i]['src'],end='\t')
????i +=1
python1 python2 python3
lst1 = [11,22,33,44,55,66,77,88,99,90]
lst2 = []
lst3 = []
for iin lst1:
????if i <=66:
????????lst2.append(i)
????else:
????????lst3.append(i)
d = {'k1':lst2,'k2':lst3}
print(d)
{'k1': [11, 22, 33, 44, 55, 66], 'k2': [77, 88, 99, 90]}