我在CSDN学python-8

1、什么是元组

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/7  16:45

# 不变可变序列:没有增、删,改的操作
# -字符串
# -元组:Python内置的数据结构之一,与列表相似,但是为( , ,)
s = 'hello'
print(id(s))
s = s + 'world'
print(id(s))
print(s)
# 可变序列:可以对序列执行增、删、改操作,对象地址不发生更改
# -列表:[, , ]
# -字典
lst = [1, 5, 10]
print(id(lst))
lst.append(30)
print(id(lst))
# 列表增删改操作后,标识不变

2、元组的创建方式

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/10  10:42

# 元组的创建方式
# -直接小括号
# -使用内置函数tuple()
# -只包含一个元组的元素需要使用逗号和小括号
print('------第一种方式,使用()------')
t = ('Python', 'world', 33)
print(t)
print(type(t))
t2 = 'Python', 'world', 33  # 省略小括号
print(t2)
print(type(t2))
t3 = ('Python' )
print(t3)
print(type(t3))
t4 = ('Python', )  # 如果元组中只有一个元素,逗号不能省
print(t4)
print(type(t4))
print('------第二种方式,使用内置函数tuple()------')
t1 = tuple(('Python', 'world', 33))
print(t1)
print(type(t1))
print('------空元组的创建方式------')
print('------空列表的创建方式------')
lst = []
lst1 = list()
d = {}
d2 = dict()
t5 = ()
t6 = tuple()
print(lst, type(lst), id(lst))
print(lst1, type(lst1), id(lst1))
print(d, type(d), id(d))
print(d2, type(d2), id(d2))
print(t5, type(t5), id(t5))
print(t6, type(t6), id(t6))
print('空列表', lst, lst1)
print('空字典', d, d2)
print('空元组', t5, t6)

# 为什么要将元组设计成不可变序列?
# -在多任务环境下,同时操作对象时不需要加锁,所以在程序中尽量使用不可变序列
# (可变序列同时操作对象时,需要加锁,防止数据冲突)
# 注意:元组中存储的是对象的引用
# -如果元组中的对象本身是不可变对象,则不能再引用其他对象
# -如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变
t = (1, [2, 3], 9)
print(t)
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]))
print('------尝试将t[1]修改为10------')
print(id(10))
# t[1]=10   #元组是不允许修改元素的
print('------列表[2,3]是可变序列,可向列中添加元素,列表的内存地址不变------')
t[1].append(10)  # 向列表中添加元素
print(t, id(t[1]))

3、元组的遍历

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/10  11:12

# 元组的遍历
# -元组时可迭代对象,可用for...in...进行遍历
print('------元组的遍历------')
t = ('Python', 'world', 33)
print('------第一种获取元组的方式,使用索引------')
print(t[0])
print(t[1])
print(t[2])
# print(t[3]) # 报错,元组中元素不存在 IndexError: tuple index out of range
print('------遍历元组------')
for i in t:
    print(i)

4、集合的定义及创建

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/10  11:50

# 集合:
# -python语言提供的内置数据结构
# -与列表、字典一样都属于可变类型的序列
# -集合是没有value的字典

# 集合的创建方式 -直接{} -使用内置函数set()
print('------第一种创建方式,使用{}------')
s = {2, 3, 4, 5, 5, 6, 7, 7}  # 集合中的元素不允许重复,重复的元素会去掉
print(s)
print('------第一种创建方式,使用set()------')
s1 = set(range(6))
print(s1)
s2 = set([1, 2, 4, 5, 5, 5, 6, 6])  # 元组元素会转换为集合类型
print(s2, type(s2))
s3 = set((1, 2, 4, 4, 5, 65))  # 集合中的元素无序
print(s3, type(s3))
s4 = set('python')  # 集合中的元素无序
print(s4, type(s4))
s5 = set({12, 4, 34, 55, 66, 44, 4})  # 集合中的元素无序
print(s5, type(s5))
print('------定义一个空集合------')
s6 = {}
print(type(s6))
s7 = set()
print(type(s7))

5、集合的增、删、改、查操作

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/10  12:03

# 集合的相关操作
# -集合元素的判断操作
# -集合元素的新增操作
# -集合元素的删除操作
s = {1, 2, 3, 4, 5, 6}
print('------集合元素的判断操作:in、not in------')
print(1 in s)  # True
print(10 in s)  # False
print(1 not in s)  # False
print(10 not in s)  # True
print('------集合元素的新增操作:add(),update()------')
s.add(8)  # 一次添加一个元素
print(s)
s.update({20, 40, 30})  # 一次至少添加一个元素
print(s)
s.update((12, 34, 56))
print(s)
print('------集合元素的删除操作:remove(),discard(),pop(),clear()------')
s.remove(1)
print(s)
# s.remove(10)  # 元素10不在s中,remove()删除操作时会显示异常
# print(s)
s.discard(10)  # 元素10不在s中,discard()删除操作时不会显示异常
print(s)
s.discard(12)
print(s)
s.pop()  # 一次删除任意元素,pop()内不可指定元素
print(s)
# s.pop(34)
# print(s)
s.clear()
print(s)


# 集合间的关系
# -两个集合是否相等:可以使用运算符==或!=进行判断
# -一个集合是否是另一个集合的子集:可以调用方法issubset进行判断,B是A的子集
# -一个集合是否是另一个集合的超集:可以调用方法issuperset进行判断,A是B的超集
# -两个集合是否含有交集:可以调用方法isdisjoint进行判断
print('------两个集合是否相等------')
s1 = {1, 2, 3, 4}
s2 = {1, 3, 2, 4}
print(s1 == s2)  # True
print(s1 != s2)  # False
print('------一个集合是否是另一个集合的子集------')
s1 = {1, 2, 3, 4, 5, 6}
s2 = {1, 3, 2, 4}
s3 = {1, 2, 4, 9}
print(s2.issubset(s1))  # True
print(s3.issubset(s1))  # False
print('------一个集合是否是另一个集合的超集------')
s1 = {1, 2, 3, 4, 5, 6}
s2 = {1, 3, 2, 4}
s3 = {1, 2, 4, 9}
print(s1.issuperset(s2))  # True
print(s1.issuperset(s3))  # False
print('------两个集合是否含有交集------')
print(s2.isdisjoint(s3))  # 有交集为False
s4 = {12, 34, 56}
print(s4.isdisjoint(s2))  # 无交集为True


# 集合的数学操作
print('------两个集合之间的交集操作------')
s1 = {1, 2, 3, 4}
s2 = {2, 3, 4, 5, 6}
print(s1.intersection(s2))
print(s1 & s2)
print(s1)
print(s2)
print('------两个集合之间的并集操作------')
print(s1.union(s2))
print(s1 | s2)
print(s1)
print(s2)
print('------两个集合之间的差集操作------')
print(s1.difference(s2))
print(s1 - s2)
print(s2.difference(s1))
print(s2 - s1)
print(s1)
print(s2)
print('------两个集合之间的对称差集操作------')
# 对称差集:两个集合的并集-交集
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
print(s1)
print(s2)

6、集合生成式

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/10  13:44

# 集合生成式
# 用于生成集合的公式:{i*i for i in range(1, 10)}
# -i*i表示集合元素的表达式
# -i自定义变量
# -range(1,10)可迭代对象
# 注意:将{}修改为[]就是列表生成式,且没有元组生成式
lst = [i*i for i in range(6)]  # 列表生成式
print(lst)
s = {i*i for i in range(6)}  # 集合生成式
print(s)
s = {i*i for i in range(9)}  # 集合生成式
print(s)
列表、字典、元组、集合总结
数据结构是否可变是否重复是否有序定义符号
列表(list)

可变

可重复有序

[ ]

元组(tuple)不可变可重复有序( )
字典(dict)可变key不可重复,value可重复无序{key:value}
集合(set)可变不可重复(相当于key)无序{ }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小翔很开心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值