python内置容器--元组,字典与集合

1.4.原组

1.4.1.元组(tuple):将一组不可变的数据序列组合起来形成一个特殊的内置容器

1.4.2元组不允许的操作:

  • 修改,新增元素

  • 删除元素(允许删除整个元组)

  • 所有会对元组内部元素发生变化的方法无法使用(remove,append,pop等)

1.4.3.元组的操作

  • 创建格式:tuplename=(element1,element2,element3,.....elementn),元组元素个数数限制,类型都可以不相同

nume1=(2,3,4,5,6)
num2=(1,)    #一个元素的元组,逗号不能省略
num3=(1)    #不是元组,只是赋值1
​
num4=()   #空元祖
num5=tuple(range(0,20,2))   #使用tuple()函数创建元组
​
str1=('china','hello','andy')
​
str2=(82,'python',[1,2,3,4,5])
str3='python','你好','人生苦短,我用python'  #圆括号可以省略
  • 删除元组:del tuplename

tup1=(12,34,56)
tup2=('abc','xyz')
#tup1[0]=100     #报错了
tup1=(9,8,7,6)  #支持整体处理
tup3=tup1+tup2
print(tup3)
del tup1
del tup2
#注意元组为不可变序列,不支持单个元素删除,但可以整体赋值修改
tup1=('a','b',['A','B'])
tup1[2][0]='x'
tup1[2][1]='y'
print(tup1)
#注意:元组只保证一级子元素不可变,对于内部嵌套的元组不保证
  • 元组连接时必须维持元组性质,不能连接字符串或列表等

tup1=(1,2,3)
list1=[4,5,6]
tup2=tup1+list1 #报错
tup2=tup1+'china'   #报错
  • 元组连接的对象只有一个元素时,必须加逗号

tup1=(1,2,3)
tup2=tup1+(4,)  #加逗号
print(tup2)
  • 元组的读取问题:定义时使用(),若要读取访问元组内容依然和列表一样使用 [ ] 配合索引实现

num1=(1,2,3,4,5)
str1=('apple','orange')
print(num1[0],str1[1])
  • 元组也支持切片:与列表操作方式相同

import random
tup1=tuple(random.sample(range(0,30),10))
print(tup1)
​
print(tup1[1:3])
print(tup1[:4])
print(tup1[5:])
print(tup1[-2:])
print(tup1[-3:3:-1])
print(tup1[0:5:3])
  • 元组与列表的数据互换

    • list():转为列表

    • tuple():转为元组

tup1=(123,'hello','999',35.6)
list1=list(tup1)
list1.append('china')
print(list1)
tup1=tuple(list)
print(tup1)

1.4.4.元组与列表的区别

  • 元组与列表都属于序列,都可以按照特定的顺序存储一组数据,类型个数不受限制

  • 区别:

    • 列表为可变序列,元素可以随时修改增删,元组不可变序列,元素内容不可修改,删除,除非整体替代

    • 元组不支持append(),extend(),insert()等方法

    • 元组和列表仅能通过切片进行访问

    • 元组比列表结构简单,占用资源少,程序运行速度快

    • 元组比列表安全

1.5.字典

1.5.1.概念:字典属于可变序列,使用‘键:值’(key-value)的方式配对存储数据,类似于新华字典中拼音-汉字的关系

1.5.2.格式:dictname={key1:value1,key2:value,........,keyn:valuen}

  • distname:字典名

  • key:元素的键

  • value:元素的值,可以为任意数据,不需要唯一

1.5.3.字典创建示例

dict1={'andy':1001,'fox':1002,'alice':1003}
dict2={}
dict3=dict()    #使用dict方法创建空字典

name=['春香','夏柠','秋兰','翠花']
sign=['天秤座','射手座','双鱼座','金牛座']
#使用zip()函数将列表或元组对应的元素组合成字典
dict4=dict(zip(name,sign))

#键=值得方式创建
dict5=dict(a=98.5,b=77.4,c=87.2,d=64.9)
print(dict1,'\n',dict2,'\n',dict3,'\n',dict4,'\n',dict5,'\n')

1.5.4.增加字典元素

  • 格式:dictname[键]=值

  • 例:

dict1={'西瓜':5,'香蕉':8,'荔枝':10}
dict1['橘子']=6
dict1['荔枝']=12
print(dict1)

1.5.5.删除字典

  • del 字典名[键]:删除字典中特定元素

  • dictname.claer():清空字典全部元素

  • del 字典名:删除字典整体、

dict1={'西瓜':5,'香蕉':8,'荔枝':10}
del dict1['西瓜']
dict1.clear()
print(dict1)
del dict1

1.5.6.字典的访问:dictname[键]

dict1={'西瓜':5,'香蕉':8,'荔枝':10}
print(dict1['香蕉'],dict1['荔枝'])

1.5.7.字典的复制

  • 作用:用来保护原字典内容

  • 格式:new_dictname=dictname.copy()

  • 注意:默认为深拷贝

dict1={'西瓜':5,'香蕉':8,'荔枝':10}
dict2=dict1.copy()
print(dict1,'\n',dict2)
print(id(dict1),id(dict2))

1.5.8.使用get()方法获取指定的键值

  • 格式:dictname.get(key,default)

  • key:指定的键

  • default:用于指定键不存在时,返回的默认值,若省略则返回None

dict1={"Name":'andy',"Age":17,"Class":'First'}
print(dict1.get('Age'))
print(dict1.get('Score'))
print(dict1.get('Score',98.5))
#若访问的键不存在则执行default

1.5.9.字典的遍历

  • 格式1:遍历值,items()方式

for i in dictname.item():

  • 格式2:键:值遍历

for key,value in dictname.items()

处理key和value

name=['春香','夏柠','秋兰','翠花']
sign=['天秤座','射手座','双鱼座','金牛座']
dict1=dict(zip(name,sign))
for i in dict1.items():
    print(i)
for i,j in dict1.items():
    print(i,'的星座是:',j)
  • 格式3:遍历字典的键,keys()

for key in dictname.keys():

处理

players={'张三':77.8,'李四':55.9,'王五':87.6}
for name in players.keys():
    print('姓名:',name)
  • 注意1:不允许同一个键出现两次,创建时如果同一个被赋值2次,后一个会被记住

dict1={'num':1001,'score':98,'num':1002}
print(dict1)
  • 注意2:键必须不可变,所以使用数字,字符串,元组来充当,列表不行

dict1={['num']:1001,'score':98,'num':1002}
print(dict1)

1.5.10.字典内含列表

  • 列表存在字典中,一般作为字典的某个键的值出现,需要使用循环完成处理,外层循环用于取得字典的键,内层循环用于取得值或将列表拆分

sports={'andy':['篮球','足球','橄榄球'],'jenny':['体操','游泳'],'fox':['羽毛球','乒乓球','骑行']}
for name,na_sport in sports.items():
    print("%s喜欢的运动是:"%name,end=' ')
    for sp in na_sport:
        print(" ",sp,end=" ")
    print()

1.5.11.字典内含字典

  • 字典存储在字典一般用于表示字典中键的值

wechat={'001':{'last_name':'张三','first_name':'张三丰','city':'西安'},
       '002':{'last_name':'张四','first_name':'李时珍','city':'咸阳'} }
for num,name in wechat.items():
    print('账户:',num,end=" ")
    print('姓名:',name['first_name'],end=' ')
    print('住址:',name['city'])

1.6.集合:

1.6.1.概念:集合是一个无序不重复的序列

1.6.2.作用:用于关系测试和消除重复值

1.6.3.集合使用大括号{}框定原素,使用逗号分隔

1.6.4.格式:setname={value1,value2,value3,value4,.....valuen}

set1={1,2,3,4,5}
set2={'name','num','age','score'}	#集合本质为无序可变序列,输出时顺序可能不同
set3=('命运给与我们的不是失望之酒,而是机会之杯')
set4=set([1,2,3,4,5.6])
set5=set()  #空集合,不能为{}
set6=set('apple',)  #必须增加逗号
print(set1,'\n',set2,'\n',set3,'\n',set4,'\n',set5,'\n',set6,'\n')

1.6.5.集合应用的核心:去重

list1=[1,2,3,2,3,4,5,6,5,4,3,4,5,6,7,8,6,4,4,46,3,3]
x=set(list1)
print(x)

1.6.6.集合添加与删除

  • 添加元素:setname.add(elsment)

set1=set(['java','c','go','c#'])
set1.add('python')
print(set1)

删除元素:setname.remove

1.6.7集合的交,并,差集运算

  • 交集:&

  • 并集

  • 差集:-

  • 对称差集:^

  • 例:

set1=set('abcdefg')
set2=set('efghijk')
print(set1 & set2)
print(set1 | set2)
print(set1 - set2)
print(set1 ^ set2)

1.6.8集合判断是否相等

  • 符号:== !=

  • 返回值:Ture False

A={1,2,3,4}
B={3,4,5,6}
C={1,2,3,4}
print(A==B,A==C)

1.6.9.特殊操作

  • sidisjoint():两个集合没有共同元素时返回True

A={1,2,3,4}
B={5,6,7,8}
print(A.isdisjoint(B))
  • issubset()测试是否为子集:

A={1,2,3,4}
B={1,2,3,4,5,6,7,8}
print(A.issubset(B))
  • issuperset():测试是否为父集

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流年ꦿ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值