Python16 Set集合容器

图片

1. Set集合数据类型

Python 中的 Set(集合)是一种无序、可变的数据集合,其中不允许重复的元素。它是由大括号 {} 构成的,元素之间用逗号分隔。Set 中的元素必须是不可变的数据类型,例如整数、浮点数、元组、字符串等。Set 是一种很有用的数据结构,基本功能包括集合运算、关系测试和消除重复元素。与列表(List)相比,Set 具有以下特点:

1.Set 中的元素是无序的,无法通过索引访问。

2.Set 中不允许重复的元素,如果尝试添加重复的元素,只会保留一个。

3.Set 是可变的,可以添加或删除元素。

4.Set 不支持索引、切片等其它类序列(sequence-like)的操作。

5.Set 支持 x in set, len(set),和 for x in set,作为一个无序的集合,sets不记录元素位置或者插入点。

可以使用 set() 函数来创建一个空的 Set,或者通过在大括号 {} 中提供元素来创建 Set。

2.浅拷贝与深拷贝

在Python中,浅拷贝(shallow copy)和深拷贝(deep copy)是用来创建可变对象副本的两种不同方式,它们的主要区别在于复制过程中对对象内部嵌套对象的处理方式。

  1. 浅拷贝(Shallow Copy):

    • 浅拷贝会创建一个新的对象,该对象的内容是原始对象中的元素的引用(或者说是对原始对象中元素的引用)。

    • 如果原始对象中的元素是不可变的,那么浅拷贝将创建一个完全独立的副本,因为不可变对象无法被修改。

    • 但是,如果原始对象中的元素是可变的(例如列表、字典等),那么浅拷贝将只复制元素的引用,而不会创建新的副本。这意味着对副本中的可变元素的修改会影响原始对象中的相应元素,因为它们引用的是同一个对象。

  2. 深拷贝(Deep Copy):

    • 深拷贝会递归地复制原始对象及其所有嵌套对象,创建一个完全独立的副本。

    • 即使原始对象中的元素是可变的,深拷贝也会为每个元素创建新的副本,而不是简单地复制引用。

    • 这意味着对深拷贝副本中的任何对象的修改都不会影响原始对象,因为它们是完全独立的。

在Python中,可以使用 copy 模块中的 copy() 函数来执行浅拷贝,使用 copy.deepcopy() 函数来执行深拷贝。

3.集合的常用操作

1.交集
# 交集、并集、差集 & | -
# 交集 &

# 使用{}创建集合
my_set = {'apple', 'banana', 'orange'}

my_set2 = {'apple', 'banana', 'orange'}

s1=set('cheney')
s2=set(['a','b','c'])
s1&s2  # 等同于s1.intersection(s2)

图片

2.并集
# 并集 |
s1=set('cheney')
s2=set(['a','b','c'])
s1|s2  # s1.union(s2)

图片

3.差集
# 差集 -
s1=set('cheney')
s2=set(['a','b','c'])
s1|s2  # s1.difference(s2)

图片

4.对称差(两个集合中不重复的元素的集合)
# 对称差集 ^
s1=set('cheney')
s2=set(['a','b','c'])
s1^s2  # s1.symmetric_difference(s2)

图片

5.集合去重
# 集合去重
s3=[11,2,3,22,11,22]
s=set(s3)
s

图片

6.添加一个元素
s4=set("Hello")
s4.add('Python16')
s4

图片

7.添加多个元素
s4.update([1,2,3.4])
s4

图片

8.删除某个元素
# 删除某项
s4.remove(3.4)
s4

图片

9.获取集合长度
# 集合的长度
len(s4)

图片

10.判断元素是否在集合中
x='o'
x in s4

图片

y='s'
y not in s4

图片

11.判断一个集合是否为另一个集合的子集
s = set('hello')
s.issubset(s4)

图片

12.创建一个新的集合

浅拷贝一个新集合。

s5 = s4.copy()
s5 

图片

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值