1.元组
- 元组是一个不可变的序列(元组内的数据是不可变的,不可更改)(不希望数据发生改变的时候我们就用元组,其余的情况都用列表)
- 元组的表达形式() tuple
- tuple1=10#这是一个整型
- tuple1=10, #这是一个元组
- 如果一个元组不是空元组,那么元组内最少有一个逗号
元组的拆包
1.tuple1=(1,2)
a,b=tuole1
print(a,b)
输出:1,2
- 拆包的时候有*,有且只能有一个
2.tuple1=(1,2,3)
a,*b=tuole1
print(a,b)
输出:1,[2,3]
字符串的拆包
a=‘abcdf’
b,*c=a
print(b,c)
输出:a [‘b’,‘c’,‘d’,‘f’]
列表的拆包
a=[1,2,3,4,5]
b,*c=a
print(b,c)
输出:1 [2,3,4,5]
2.字典(可变类型)
我们主要可以通过3种方式对字典进行遍历
• keys() 该方法返回字典所有的key
• values() 该方法返回一个序列 序列中保存有字典的值
• items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含有双值子序列 双值分别是 字典中的key和value
-
为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value
-
key-value我们称之为键值对,也可以称呼他为一项item
-
由于字典中的 key 是非常关键的数据,而且程序需要通过 key 来访问 value,因此字典中的 key 不允许重复。
-
当字典的key有重复的时候,后面的key-value会替换前面的
字典的创建
dict1=dict(name=‘你是’,age=‘18’,sex=‘男’)
dict1=dict([(name,‘你是’,age,‘18’,sex,‘男’)])
字典的增删改除
-
len() eg:len(dict1)=3在字典中依然实用
-
in 和not in 检测的是key
-
使用key获取value
-
1.dict[key] #如果不存在key会报错
-
2.dict.get(key) #如果不存在key不会报错
-
修改字典
-
dict[key]=value
-
向字典添加key-value
-
1.dict.setdefault(key,[default])
-
如果这个key以经存在于这个字典中,则返回value,不会对字典有任何影响,如果不存在,则向字典中添加这个key,并设置了value值
-
2.dict.update(),将字典中的key-value添加到当前字典当中
-
d1={‘1’:1}
-
d2={’2‘:2}
-
d1.update(d2)
-
print(d1)
-
输出:{‘1’:1,’2‘:2}
-
删除字典
-
1.del 通过关键字删除
-
dict1={name:‘你是’,age:‘18’,sex:‘男’}
-
del dict1[‘name’]
-
2.dict.popitem()随机删除一个键值对,一般都会删除最后一个,有一个返回值就是你删除的对象,结果是一个元组
-
dict.popitem()
-
3.dict.pop(ket,[default]) 根据key来删除键值对
-
dict.pop(‘sex’)
-
4.dict.clear()清空字典
-
dict1.clear()
深拷贝和浅拷贝
- 浅拷贝
- 只能对第一层的数据进行拷贝,如果第一层的数据也是可变类型,那么浅拷贝无法将这个数据重新拷贝一份,形成新的id
- 俩个地址不一样
- 输出:51144696 51144776
- 要做拷贝的对象必须是可变类型
- 其中列表的地址一样
- 深拷贝
- 深拷贝可以对全部的数据进行拷贝生成新的id
- import copy
- copy.copy()#浅拷贝
- dict3=copy.deepcopy(dict)
- 函数的遍历
作业1.a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},{“src”:“python3”}]}} 找到python1/python2/python3
- a = {‘name’:‘123’,‘data’:{‘result’:[{‘src’:‘python1’},{‘src’:‘python2’},{‘src’:‘python3’}]}}
c=a.get(‘data’)
print©
d=c.get(‘result’)
print(d)
for j in d[0].values():
print(j)
for k in d[1].values():
print(k)
for p in d[2].values():
print§
作业2.有如下值集合[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key的值中,将小于66值保存至第二个key的值中。
- a=[11,22,33,44,55,66,77,88,99,90]
dict1={‘名字’:‘name’,‘颜色’:‘red’}
d,f=[],[]
for i in a :
if i>66:
d.append(i)
elif i<66:
f.append(i)
else:
continue
d=dict1.setdefault(‘key1’,d)
print(dict1)
c=dict1.setdefault(‘key2’,f)
print(dict1)