python基础-5(元组以及集合)

#元组、集合
# 元组
'''
元组:python内置的是数据结构之一,是一个不可变序列
不可边序列与可变序列:
   不可变序列:字符串、元组
            没有增删改的操作
   可变序列:列表、字典
        可以对序列执行增删改的操作,对象地址不发生更改
'''
#元组的创建:
'''直接使用()'''
t=('python','hello',91)
print(t)
print(type(t))
t1='python','hello',98
print(t1)
print(type(t1))
'''使用内置函数tuple()'''
t2=tuple(('pyhton','hello2',98))
print(t2)
print(type(t2))
'''只包含一个元组的元素使用逗号和小括号'''
t3=(10,)
print(t3)
print(type(t3))
'''空的元组'''
t4=()
print(t4)
t5=tuple()
print(t5)

'''
为什么将元组设计成不可变序列
  在多任务环境下,同时操作对象时不需要加锁
  因此,在程序中尽量使用不可变序列
注意事项:
  元组中存储的是对象的引用
  a)如果元组中对象本身不可变对象,则不能在引用其他对象
  b)如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变
'''
t=(10,[12,15],100)
print(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]修改为2000'''
#t[1]=2000  # 元组是不允许修改元素的
'''由于[12,15]是列表,而列表是可变序列,所以可以向列表中添加元素,而列表的内存地址不变'''
t[1].append(2000)
print(t[1],type(t[1]),id(t[1]))

#元组的遍历
'''元组是可迭代对象,所以可以使用for...in进行遍历'''
t=tuple(('python','helo',21))
for item in t:
    print(item)
'''使用索引'''
print(t[2])

#集合
'''
python语言提供的内置数据结构
与列表、字典一样都属于可变类型的序列
结合是没有value的字典
'''
#集合的创建
s={'pyhton','hello',91}
print(s,type(s))

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

s2=set([3,4,53,56])
print(s2,type(s2))

s3=set((3,4,53,56))
print(s3,type(s3))

s4=set('python')
print(s4,type(s4))

s5=set({3,4,53,56})
print(s5,type(s5))

s6=set()
print(s6,type(s6))
#集合的相关操作
'''
集合元素的判断操作
in 或者 not in
集合元素的新增操作:
调用add()方法,一次添加一个元素
调用update()方法至少添加一个元素
集合元素的删除操作:
调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError
调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛异常
调用pop()方法,一次只删除一个任意元素
调用clear()方法,清空集合
'''
#集合间的关系
'''
两个集合是否相等
 可以使用运算符==或!= 进行判断
一个集合是否是另一个集合的子集
 可以调用方法issubset进行判断
 B是A的子集
一个集合是否是另一个集合的超集
 可以调用方法issuperset进行判断
 A是B的超集
两个集合是否没有交集
 可以调用方法isdisjoint进行判断
'''
#集合的数学操作
'''交集'''
s1={10,20,30,40}
s2={20,30,40,50,60}
print(s1.intersection(s2))
print(s1 & s2)   #intersection()与&等价,交集操作
'''并集'''
print(s1.union(s2))
print(s1 | s2)
'''差集操作'''
print(s1.difference(s2))
print(s1-s2)
'''对称差集'''
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
#集合生成式
lst={ i * i for i in range(5)}
#{集合元素的表达式 for 自定义变量 in 可迭代对象}
print(lst)

总结:

数据结构是否可变        是否重复是否有序定义符号
列表list可变        可重复有序[]
元组tuple不可变可重复有序()
字典dict可变key不可重复,value可重复无序{key:value}
集合set可变不可重复无序{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值