第七课 元祖、集合

元祖简介

  • 元组表现形式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)                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值