python基础笔记6——元组和集合

本文介绍了Python中的元组和集合。元组是不可变序列,通过小括号创建,不能进行增删改操作,但其元素内的可变序列可以修改。集合则是可变序列,用花括号创建,支持增删改操作,同时具备判断、交并差集等数学操作。集合和字典类似,元素不可重复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在这里插入图片描述

元组

  • 不可变序列:无增、删、改操作
  • 序列和字典都是可变序列
  • 元组名= ( 元素1 , 元素2 ,… )(与列表类似)

创建

  1. 使用小括号()
  2. 使用内置函数tuple():t = tuple ( ( ' xxx ' , ' xx ' , 000 ) )
  3. 若元组中只包含一个元素,需要使用逗号和小括号:t = ( 10 , )
  4. 空元组的创建(与空列表、空字典的创建相似
t1=()
t2=tuple()

元组为不可变序列

元组的元素不可修改,但若元组中的元素为可变序列,可以修改这个元素

t=(10,[20,30],90)
print(t,type(t))
print(t[0],type(t[0]),id(t[0]))
print(t[1],type(t[1]),id(t[1]))
print(t[2],type(t[2]),id(t[2]))
'''尝试将t[1]修改为100'''
print(id(100))
#t[1]=100    报错,因为元组是不可变序列,不能修改
t[1].append(100)#向列表中增加元素e
print(t,id(t[1]))

运行结果
在这里插入图片描述

元组的获取

  • 使用索引:元组名[索引数]
  • 遍历:for ... in ....(不知道有元组有多少个元素时)
t=('python','你好',200)
for item in t:
    print(item)

运行结果:

python
你好
200

集合

  • 可变类型的序列(可进行增、删、改操作)
  • 集合是没有value的字典(集合的元素相当于字典中的key)
    **注意:**集合和字典一样,是不可重复的

创建:

  • 使用花括号{}
  • 使用内置函数set()
  • 空集合:集合名=set( )
s={1,3,1,7,8,9}#集合中的元素不可重复
print(s,type(s))

s1=set(range(6))
print(s1,type(s1))

s2=set([2,3,5,5,9])#列表类型转为set
print(s2,type(s2))

s3=set(('python','你好',200,67,67))#元组转为set
print(s3,type(s3))

s4=set('python')# 可以看出集合中的元素是无序的
print(s4,type(s4))

运行结果:

{1, 3, 7, 8, 9} <class 'set'>
{0, 1, 2, 3, 4, 5} <class 'set'>
{9, 2, 3, 5} <class 'set'>
{200, 67, 'python', '你好'} <class 'set'>
{'n', 'o', 't', 'y', 'p', 'h'} <class 'set'>

集合的相关操作

判断操作

判断某元素是否在集合中:in 或not in(同列表,字典)

  • 使用add():添加一个元素
  • 使用update():至少添加一个元素
s.add(10) #{1, 3, 7, 8, 9, 10}
print(s)
s.update({10,11,12}) #{1, 3, 7, 8, 9, 10, 11, 12}
print(s)
s.update([13,14])#{1, 3, 7, 8, 9, 10, 11, 12,13,14}
print(s)
s.update((20,40))#{1, 3, 7, 8, 9, 10, 11, 12, 13, 14, 40, 20}
print(s)

  • remove():删除一个指定元素(若不存在则报错KeyError)
  • discard():删除一个指定元素(若不存在不抛出异常)
  • pop():一次删除任一元素(不知道删除的是哪个)
  • clear():清空集合

集合间的关系

2个集合是否相等

  • 元素相同就相等
  • 使用运算符==或 !=,返回结果为True或False
    注意:2个集合只顺序不同也视为是相等的
s1={10,20,30}
s2={20,10,30,10}
print(s1==s2) #True

包含关系

  • B时A的子集:使用issubset
  • A是B的超集:issuperset
    注意:集合A是自己的子集也是自己的超集
s1={10,20,30}
s2={20,10,30,50}
print(s1.issubset (s2))#判断s1是否为s2的子集    True
print(s2.issuperset(s1))# 判断s2是否为s1的超集  True

是否有交集

  • 使用isdisjoint判断:集合1.isdisjoint(集合2)
    若有交集返回False,无交集返回True

集合的数学操作

  1. 交集:集合1.intersection (集合2) 集合1 & 集合2
  2. 并集:集合1.union (集合2)集合1 | 集合2
  3. 差集:集合1.difference (集合2)集合1 - 集合2
  4. 对称差集集合1.symmetric_difference (集合2)集合1 ^ 集合2
    上面4个操作均不改变原来2个集合的值
s1={10,20,30}
s2={20,30,50,40}
print(s1.intersection(s2))
print(s1 & s2)            #intersection方法与&等价,均为交集操作
print(s1.union(s2))
print(s1 | s2)            #union方法与|等价,均为并操作
print(s2.difference(s1))
print(s2 - s1)            #difference与-相同,均为差操作
print(s2.symmetric_difference(s1))
print( s1 ^ s2)          #symmetric_difference与^相同,均为对称差

运行结果:

{20, 30}
{20, 30}
{50, 20, 40, 10, 30}
{50, 20, 40, 10, 30}
{40, 50}
{40, 50}
{40, 10, 50}
{40, 10, 50}

集合生成式

字典生成式d={item:value for item,value in zip(item,value)}
列表生成式[ 2 * i for i in range ( 1 , 10 ) ]
集合生成式:{ 2 * i for i in range ( 1 , 10 ) }(把列表生成式中的[]改为{}即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值