元组和集合

元组

pyhton内置的数据结构之一,是一个不可变序列,没有增删改操作。包括字符串和元组。

可变序列具有增删改操作,且经过该操作后,内存地址不发生更改。

创建方式

# 直接小括号,元素与元素之间用逗号分隔
t = ('hello','good','morning')
t2 = 'hello','good',10 # 小括号可以省略
print(t)
print(t2,type(t2))

# 使用内置函数tuple()
t=tuple(('hello','good','morning'))
print(t)

# 只包含一个元素的元组需要使用逗号和小括号
t=(10,) # 逗号不可省略,否则就是原数据类型
print(t)

# 空元组
t1=()
t2=tuple()
print(t1,t2)
('hello', 'good', 'morning')
('hello', 'good', 10) <class 'tuple'>
('hello', 'good', 'morning')
(10,)
() ()

原理

为什么要将元组设计成不可变序列?
在多任务环境下,同时操作对象时不需要加锁,因此,在程序中尽量使用不可变序列。

注意事项:元组中存储的是对象的引用

a)如果元组中对象本身不可对象,则不能再引用其他对象;

b)如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变

元组的遍历

# 元组是可迭代对象,可以使用for...in进行遍历
t = ('hello','good',100)
for item in t:
    print(item,type(item))
hello <class 'str'>
good <class 'str'>
100 <class 'int'>
# 可以根据索引提取元组元素
t = ('hello','good',100)
print(t[0])
hello

集合

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

创建方式

# 直接{}创建,元素与元素之间用逗号隔开
s = {'hello','good',100}
print(s,type(s))

s_1 = {1,2,3,4,4,5,6} # 集合中的元素不可重复
print(s_1)
{'good', 'hello', 100} <class 'set'>
{1, 2, 3, 4, 5, 6}
# 使用内置函数set()
s = set(range(5))
print(s,type(s))
s_1=set([1,2,3,4,5]) # 将列表转化为集合
s_2=set((1,2,3,4,67)) # 将元组转化为集合,集合是无序的
s_3=set(('python')) # 将转化为集合,集合是无序的
s_4=set({123,4,5,6,7}) # 将集合转化为集合,集合是无序的
print(s_1)
print(s_2)
print(s_3)
print(s_4)
{0, 1, 2, 3, 4} <class 'set'>
{1, 2, 3, 4, 5}
{1, 2, 67, 3, 4}
{'t', 'h', 'n', 'p', 'o', 'y'}
{4, 5, 6, 7, 123}
# 定义一个空集合
s_5 = set()
print(s_5,type(s_5))

s_6 = {}  # 创建的是空字典
print(s_6,type(s_6))
set() <class 'set'>
{} <class 'dict'>

相关操作

# 判断某元素是否在集合内,in / not in
s = set(range(5))
print(0 in s)
print(6 not in s)
True
True
# 新增元素

# 调用add()方法,一次添加一个元素
s = {1,2,3,4,5,6}
s.add(9)
print(s)
s.update({4,5,6,7,8}) # 重复的不加入,可添加列表/元组
print(s)

# 调用update()方法至少调价一个元素
{1, 2, 3, 4, 5, 6, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
# 集合元素的删除操作
s = {1,2,3,4,5,6}

# 一次删除一个指定元素,若元素不存在则返回KeyError
s.remove(6) 
print(s)

# 调用discard()方法,一次删除一个指定元素,若元素不存在,不会报错
s.discard(99)
print(s)
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
# 调用pop()方法,一次只删除一个任意元素
s.pop()
print(s)
{2, 3, 4, 5}
# 调用clear()方法,清空集合
s.clear()
print(s)
set()

集合间的关系

# 两个集合是否相等,可以使用==或!=进行判断
s1 = {1,2,3,4}
s2 = {3,4,2,1}
print(s1==s2)
print(s1!=s2)
True
False
# 一个集合是否是另一个集合的子集,可以调用方法issubset进行判断
s1 = {1,2,3}
s2 = {1,2,3,4,5}
s3 = {7,5}
print(s1.issubset(s2))
print(s3.issubset(s2))
True
False
# 一个集合是否是另一个集合的超集,可以调用方法issuperset进行判断
s1 = {1,2,3}
s2 = {1,2,3,4,5}
s3 = {7,5}
print(s2.issuperset(s1))
print(s2.issuperset(s3))
True
False
# 两个集合是否没有交集,可以调用方法isdisjoint进行判断
s1 = {1,2,3}
s2 = {1,2,3,4,5}
s3 = {7,5}
print(s1.isdisjoint(s3))
print(s2.isdisjoint(s3))
True
False

集合的数学操作

s2 = {1,2,3,4,5}
s3 = {7,5}

# 交集
print(s2.intersection(s3))
print(s2 & s3)
{5}
{5}
# 并集
s2 = {1,2,3,4,5}
s3 = {7,5}
print(s2.union(s3))
print(s2|s3)
{1, 2, 3, 4, 5, 7}
{1, 2, 3, 4, 5, 7}
# 差集
s2 = {1,2,3,4,5}
s3 = {7,5}
print(s2.difference(s3))
print(s2-s3)
print(s3.difference(s2))
print(s3-s2)
{1, 2, 3, 4}
{1, 2, 3, 4}
{7}
{7}
# 对称差集
s2 = {1,2,3,4,5}
s3 = {7,5}
print(s2.symmetric_difference(s3))
print(s2^s3)
{1, 2, 3, 4, 7}
{1, 2, 3, 4, 7}

集合生成式

s = {i**2 for i in range(10)}
print(s, type(s))
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25} <class 'set'>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python实验七主要涉及元组集合的相关知识点,包括元组的定义、创建、操作以及集合的定义、创建、操作等。下面是对实验七中元组集合的简要介绍: 1. 元组 元组是Python中的一种不可变序列,可以看作是一组有序的数据。元组的定义方式为用小括号()将数据括起来,数据之间用逗号隔开。元组中的数据可以是不同类型的数据,也可以是相同类型的数据。元组中的数据是有序的,可以通过下标来访问元组中的数据。 2. 元组的操作 元组支持的操作包括索引、切片、加、乘、比较等。元组是不可变序列,因此不能对元组进行修改、删除等操作。 3. 集合 集合是Python中的一种无序、不重复的数据集合集合的定义方式为用大括号{}将数据括起来,数据之间用逗号隔开。集合中的数据可以是不同类型的数据,也可以是相同类型的数据。集合中的数据是无序的,不能通过下标来访问集合中的数据。 4. 集合的操作 集合支持的操作包括并集、交集、差集、对称差集等。集合是可变序列,因此可以对集合进行添加、删除等操作。 下面是一个元组集合的简单示例: ```python # 定义元组 tup = (1, 2, 3, 4, 5) print(tup) # 访问元组中的数据 print(tup[0]) # 定义集合 set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} print(set1) print(set2) # 集合的并集 print(set1 | set2) # 集合的交集 print(set1 & set2) # 集合的差集 print(set1 - set2) # 集合的对称差集 print(set1 ^ set2) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值