【Python 24】元组和集合

【Python 24】元组和集合,第1张

1. 什么是元组

不可变序列字符串、元组没有增删改 *** 作
可变序列列表、字典可增删改 *** 作,对象地址不发生改变

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 14:55
""" 可变序列 列表、字典"""
lst = [10, 20, 45]  # 列表
print(id(lst))
lst.append(300)
print(lst)
print(id(lst))

"""不可变序列 字符串、元组"""
s = 'hello'
print(id(s))
s = s + 'world'
print(s)
print(id(s))  # 内存地址改变了


(注意:列表使用 [ ] 表示,元组是用()表示)


2. 元组的创建

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 15:04
"""元组的创建方式"""
'''1. 小括号'''
t = ('Python', 'world', 98)
print(t)
print(type(t))

'''2. 内置函数tuple()'''
t2 = tuple(('Python', 'world', 98))
print(t2)
print(type(t2))

'''3. 省略小括号'''
t3 = 'Python', 'world', 98
print(t3)
print(type(t3))

t4 = ('Python',)  # 只有一个元素的话,必须加入逗号,否则,会认为是str类型
print(t4)
print(type(t4))

"""空元祖的创建方式"""
lst = []  # 空列表
lst2 = list()  # 空列表

d = {}  # 空字典
d2 = dict()  # 空字典

tt = ()  # 空元祖
ttt = tuple()  # 空元祖

print('空列表', lst, lst2)
print('空字典', d, d2)
print('空元组', tt, ttt)

 

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 15:21
t = (10, [20, 30], 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]))

# t[1] = 100  # 元组不允许修改元素
"""由于[20,30]是列表,所以可以向列表添加元素,而列表的内存地址不变"""
t[1].append(100)
print(t)
print(t[1], type(t[1]), id(t[1]))

3. 元组的遍历

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 15:33
"""元组的遍历"""
t = ('Python', 'world', 98)
print(t[0])
print(t[1])
print(t[2])
# print(t[3])  # 索引超出范围
for item in t:
    print(item)

4. 什么是集合

可变类型序列。用 {} 定义。与字典不同的是,集合只有key,没有value。

 

5. 集合的创建

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 15:45

"""1. 使用{} """
s = {2, 6, 3, 2, 4, 2, 1, 5}  # 不允许重复
print(s)

"""2. 使用set() """
s2 = set(range(6))
print(s2, type(s2))
s3 = set([1,2,35,2,5,2,8,2])  #  set 将列表转成集合 去重 无序
print(s3, type(s3))

s4 = set((1,2,55,23,52,1,2,5))  #  set 将元组转成集合 去重 无序
print(s4,type(s4))

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

s6 = set({2,5,3,5,7,4,5,11,6})  #  set 将集合转成集合 去重 有序
print(s6,type(s6))

s7 = {}  # 空字典
print(s7,type(s7))

s8 = set()
print(s8,type(s8))


6. 集合的增删改查 *** 作

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 15:58

s = {10,20,30,40,405,60}
"""集合元素的判断 *** 作"""
print(10 in s)
print(100 in s)
print(10 not in s)
print(100 not in s)

"""集合元素的新增 *** 作"""
s.add(80)  # 一次添加一个
print(s)
s.update({200,700,800})  #  一次至少添加一个元素
print(s)
s.update([100,500,600])  # 天界列表
s.update((45,63,85,96))  # 添加元组
print(s)

"""集合元素的删除 *** 作"""
s.remove(100)
print(s)
# s.remove(1500)  # KeyError: 1500 集合元素不存在
# print(s)

s.discard(1500)  # 集合元素不存在,不抛异常
print(s)

s.pop()
print(s)

s.pop()
print(s)

# s.pop(500)  # TypeError: set.pop() takes no arguments (1 given)
# print(s)

s.clear()  # 清空全部元素
print(s)


7. 集合间的关系

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 16:22

"""两个集合是否相等,(元素相同就相等)"""
s1 = {10, 20, 30, 40}
s2 = {30, 40, 20, 10}
print(s1 == s2)
print(s1 != s2)

"""一个集合是否是另一个集合的子集"""
s1 = {10, 20, 30, 40, 50, 60}
s2 = {10, 20, 30, 40}
s3 = {10, 20, 90}
print(s2.issubset(s1))
print(s3.issubset(s1))

"""一个集合是否是另一个集合的超集"""
print(s1.issuperset(s2))
print(s1.issuperset(s3))

"""两个集合是否有交集"""
print(s2.isdisjoint(s3))  # 是否没有交集 False 就是有交集
s4 = {100,200,400}
print(s2.isdisjoint(s4))  # 是否没有交集 True 就是无交集

 

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 16:40
"""1. 交集"""
s1 = {10,20,30,40}
s2 = {20,30,40,50,60}
print(s1.intersection(s2))
print(s1 & s2)
print(s1)
print(s2)

"""2. 并集"""
print(s1.union(s2))
print(s1 | s2)
print(s1)
print(s2)

"""3. 差集"""
print(s1.difference(s2))
print(s1-s2)
print(s1)
print(s2)

"""4.对称差集"""
print(s1.symmetric_difference(s2))
print(s1^s2)
print(s1)
print(s2)

8. 集合的生成式

# 作   者:要努力,努力,再努力
# 开发日期:2022/4/21 16:52
lst = [i*i for i in range(10)]  # 列表生成式
print(lst)

s = {i*i for i in range(10)}  # 集合生成式  无序
print(s)

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730874.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存