一.元组
-->元组的创建
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 ,指向了不同的对象
实例:
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 : 可以使用任意类型
-->字典的创建
1.直接创建
d ={'name':'小黑','age':6,'color':'black'}
print(d,type(d))
{'name': '小黑', 'age': 6, 'color': 'black'}
2.通过dict函数创建字典
d = dict(name = '小黑',age = 6,color = 'black')
print(d,type(d))
{'name': '小黑', 'age': 6, 'color': 'black'}
-->dict函数可以将一个包含双值子序列转化为字典
注意:双值子序列:序列中有两个元素,每个元素也是序列
d = dict([('name','小黑'),('age',6)])
print(d,type(d))
{'name': '小黑', 'age': 6}
-->字典元素的获取
1.普通获取 get函数获取
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])函数也可以获取字典中的value
-->如果key不存在,返回none
-->default 也可以指定一个默认值,作为第二个参数,如果获取不到这个key,则返回默认值
print(d.get('name1','key不存在')) //字典中没有name1这个key,显示默认值,不会报错
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]}