python学习笔记——第六天

本文介绍了Python中的元组和集合。元组是不可变序列,可以通过小括号或`tuple()`函数创建,文中还展示了元组的遍历和元素访问。集合则是无序且不包含重复元素的数据结构,可通过花括号或`set()`函数创建,文章详细阐述了集合的添加、删除、判断等操作,以及集合间的相等性、子集、超集、交集、并集、差集和对称差集等数学运算。
摘要由CSDN通过智能技术生成

一、元组

1、什么是元组

python内置的数据之一、是不可变序列

2、不可变序列与可变序列

  • 不变可变序:字符串、元组
  • 不变可变序列: 没有增、删,改的操作
  • 可变序列:列表、字典
  • 可变序列:可以对序列执行增、删、改操作,对象地址不发生更改

3、元组的创建

# 元组的创建方式
# 第一种创建方式,使用()
t = ('Python', 'word', 88)
print(t)
print(type(t))  # 查看数据类型
t2 = 'Python', 'word', 88  # ()可以省略
print(t2)
print(type(t2))  # 如果只有一个元素,需要使用逗号和小括号
t3 = ('Python',)
print(t3)
print(type(t3))

# 第二种创建方式,使用内置函数tuple()
t1 = tuple(('Python', 'word', 88))
print(t1)
print(type(t1))

# 空元组
t4 = ()
t5 = tuple()
print('空元组', t4)
print('空元组', t5)

运行结果:

t = (10, [20, 30], 5)
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
print(id(100))
'''t[1] = 100  # 元组是不允许修改元素的'''
# 由于[20, 30]列表,而列表是可变序列,所以可以向列中添加元素,而列表的的内存地址不变
t[1].append(100)
print(t, id(t[1]))

 运行结果:

4、元组的遍历

# 元组的遍历
t = ('hello', 'word', 88)
# 第一种获取元组元组的方式,使用索引
print(t[0])
print(t[1])
print(t[2])
# 遍历元组
for item in t:
    print(item)

二、集合

1、集合

 2、集合的创建

# 集合的创建方式
# 第一种,使用{}
s = {1, 2, 4, 5, 5, 6, 7, 7, 7}  # 集合中的元素不允许重复 重复的元素会自动去掉
print(s, type(s))
# 第二种,使用内置函数set()
s1 = set(range(6))
print(s1, type(s1))
# 通过set()将列表中的元素转为集合中的元素
s2 = [1, 56, 5, 6, 79]
set(s2)
print(s2, type(s2))
s3 = (1, 2, 4, 5, 65)
# 通过set()将元组中的元组转为集合中的元素
set(s3)
print(s3, type(s3))
# 通过set()将字符串序列转为集合中的元素
s4 = set('python')  # 集合中的元素是无序的
print(s4, type(s4))
# 通过set()将集合转为集合中的元素
s5 = {1, 2, 5, 8}
set(s5)
print(s5, type(s5))
# 空集合
s6 = set()
print(s6, type(s6))

运行结果:

3、集合的相关操作

s = {10, 20, 30, 40, 50}
# 集合元素的判断操作
print(10 in s)
print(100 in s)
print(100 not in s)
print(10 not in s)
# 集合元素的新增操作
s.add(80)  # 一次添加一个元素
print(s)
s.update({200, 300, 400})  # 一次至少添加一个元素
s.update([800, 701])
s.update((101, 90))
print(s)
# 集合元素的删除
s.remove(101)
print(s)
# s.remove(500)  # KeyError: 500 如果指定的元素不存在会抛出异常
s.discard(500)  # 如果指定的元素不存在不会抛出异常
s.discard(10)
print(s)
s.pop()  # 一次只删除一个任意元素
print(s)
s.pop()
print(s)
# s.pop(200)  # TypeError: set.pop() takes no arguments (1 given) 不能有参数
s.clear()  # 清空集合中的元素
print(s)

运行结果:

 4、集合间的关系

# 两个集合是否相等(元素相同,就相等)
s = {10, 20, 30, 40}
s1 = {30, 20, 40, 10}
print(s == s1)  # True
print(s != s1)  # False
# 一个集合是否是另一个集合的子集 issubset()
s1 = {10, 20, 30, 40, 50}
s2 = {10, 20, 30}
s3 = {10, 60}
print(s2.issubset(s1))  # True
print(s3.issubset(s1))  # False
# 一个集合是否是另一个集合的超集 issuperset()
print(s1.issuperset(s2))
print(s1.issuperset(s3))
# 两个集合是否含有交集 isdisjoint()
print(s2.isdisjoint(s1))  # False 有交集为False
s4 = {100, 200, 300}
print(s4.isdisjoint(s1))  # True 没有交集为True

5、集合的数学操作

 

# (1)交集
s1 = {10, 20, 30, 40}
s2 = {10, 30, 40, 50, 70}
print(s1.intersection(s2))
print(s1 & s2)  # intersection() 与 & 等价,都是交集操作

# (2)并集
print(s1.union(s2))
print(s1 | s2)  # union() 与 | 等价,都是并集操作

# (3)差集
print(s1.difference(s2))
print(s1 - s2)  # difference() 与 - 等价,都是差集合操作

# (4)对称差集
print(s1.symmetric_difference(s2))
print(s1 ^ s2)  # symmetric_difference() 与 ^等价,都是对称差集合操作

运行结果:

5、集合生成式

# 集合生成式
s = {i*i for i in range(8)}
print(s)  # {0, 1, 4, 36, 9, 16, 49, 25}

总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值