元祖简介
- 元组表现形式tuple
- 元组是一个不可变序列(一般当我们希望数据不改变时,我们使用元组,其他情况下基本都用列表)
- 使用()创建元素
- 元组不是空元组至少有一个逗号(,) 当元组不是空元组时括号可以省略
- 元组解包指将元组当中的每一个元素都赋值给一个变量
tuple1=(1,True,None,[],231,'ture')
print(type(tuple1))
tuple2=10, #创建元祖 ,可以省略括号
print(type(tuple2))
元祖的拆包
#列表的拆包,字符串的拆包也类似。
tuple1=(1,True,None,[],231,'ture')
a,b,*c=tuple1
print(a)
print(b)
print(c)
字典
- 字典属于一种新的数据结构称为映射(mapping)
key—value - 字典的作用和列表类似,都是用来存储对象的容器
- 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
- 在字典中每一个元素都有唯一的名字,通过这个唯一的名字可以找到指定的元素
- 这个唯一的名字我们称之为key通过key可以快速查询value也可以称之为值
- 字典我们也称之为键值对(key-value)结构
- 每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)
- 创建一个有数据的字典语法{key:value}
- 字典的值可以是任意对象字典的键可以是任意的不可变对象(int str bool tupl…).
- 字典的键是不能重复的,如果出现重复的后面的会替换前面的
字典的增删改查
取值
- dict.get(key) 通过键来取值
增加,改
#当字典里面有重复的时候,后面的一个key-value就会把前面的替代
dict1={'name':'杨过',
'age':'18',
'gender':'男',
'skill':'黯然销魂掌',
'name':'小龙女' }
#修改字典
#dict[key]= value
dict1={'name':'杨过',
'age':'18',
'gender':'男',
'skill':'黯然销魂掌'}
dict1['name']='小龙女' #这个情况会修改key对应的value
dict1['lover']=’小龙女‘ #没有这个key,就会直接添加key-value
dict1.setdefault('你好','小龙女') #这个会有返回值,需要key-value 的配对添加,不存在当前key的时候,可以直接插入。
dict1.update({'1':1,'2':2,'3':3}) #类似相加功能,直接增加另外一个字典
删
#del 关键字删除,直接删除key
del dict1[1]
#dict.popitem() 不需要传递参数,会默认删除最后一个键值对
dict1.popitem()
#dict.pop(key) 有返回值。如果删除的key不在,就会报错。 有返回值的 ,需要一个变量接收。他的返回值即为删除的key对应的value
res=dict1.pop('name')
res=dict1.pop('name',’key不存在‘) #如果没有该key,可以返回逗号后面的值
拷贝(深拷贝、浅拷贝)
import copy
dict1={'name':123,'data':345,'pay':[1,2,3]}
dict2=copy.copy(dict1) #浅拷贝
dict3=copy.deepcopy(dict1) #深拷贝
dict1['pay'][2]='我改变了' #直接修改key :pay 里面的数据
print(dict2)
print(dict1) #copy是浅拷贝,所以虽然dict2先拷贝了,但是里面的变量会根据数据的变化,导致内部数据变动
print(dict3) #深拷贝,拷贝比较彻底
遍历字典
- key遍历
for k in dict1.keys():
print(dict1[k])
- values
for v in dict1.values():
print(v)
- items
for k,v in dict1.items():
print(k,v)
集合
空集合的创建
set1=set{}
set1=set{1,2,3,4,5,6}
集合的特点
- 集合只能存储不可变对象
set1=set{1,2,3,4,5,6,[1,2]} #有可变数据,会报错
- 集合中的存储对象是无序的
set2={6,8,1,2,3,4,5}
print(set2) #没有索引
- 集合不能出现重复元素 ,可以用来去重
list1=[1,2,1,2,1,2,3,4,5,6]
set4=set(list1)
list1 = list(set4)
print(set4)
添加元素
- set.add(元素)
s=set()
s.add(1)
- update 添加元素
set2= {3,5,6,7}
set1= {1,2,3,5}
set1.update(set2)
print(set1)
删除元素
- set.pop()
s.pop()
- set.remove() 删除指定
s.remove(4)
集合的运算
- &交集运算
- |并集运算
- 差集运算
- ^亦或集
- <=检查- 个集合是否是另一个集合的子集
- <检查-个集合是否是另一个集合的真子集
- (>=检查个集合是否是另一个集合的超集)
- ( >检查个集合是否是另-个集合的真超集)
作业
- 5.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"}]}}
b=a['data']['result'][0]['src']
#取data 取result 取src
c=a['data']['result'][1]['src']
e=a['data']['result'][2]['src']
print(b)
print(c)
print(e)
- 有如下值列表[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]
b=[]
c=[]
for i in a :
if i>66:
b.append(i)
else:
c.append(i)
print(b)
print(c)