Python学习笔记(九):数据类型之 Set

Set(集合)


  • 集合(set)是一个无序,不重复元素序列;

  • 可以使用大括号 { } 或者 set() 函数创建集合。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典;

# 定义一个集合:集合是一个无序,不重复元素序列
peoples = {'jack', 'lily', 'jack', 'lucy', 'tom'}

print(type(peoples))        # 集合的数据类型
print(peoples)              # 输出集合的值,重复的数据只会输出一次

# 用 set() 方法创建一个集合
set1 = set(("how", "are", "you"))
print(type(set1))

# 创建一个空集合,只能用 set 方法
set2 = set()
print(type(set2))

# 大括号{} 是用来创建空字典的
set3 = {}
print(type(set3))

 输出结果:

  • 可以使用 in 和 not in 判断某个对象是否在集合中;
# 定义一个集合:集合是一个无序,不重复元素序列
peoples = {'jack', 'lily', 'jack', 'lucy', 'tom'}

print("lucy" in peoples)        # True
print("ken" in peoples)         # False
print("lucy" not in peoples)    # False
print("ken" not in peoples)     # True

 

 

Python 中集合(Set)的内置方法:


1、set.add(elmnt):给集合添加元素,如果添加的元素在集合中已经存在,则不执行任何操作;

2、set.update(set2):用于修改当前集合,可以添加新的集合或元素到当前集合中,如果添加的元素在集合中已存在,则不再添加(重复的元素只会出现一次);

3、set.clear():用于清空集合中所有元素;

4、set.copy():复制集合,返回新的集合;

# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"thank", "you"}

set1.add("hello")   # 向集合中添加元素(集合中的元素是无序的)
print(set1)

set1.update(set2)   # 用 set2 更新 set1
print(set1)

set3 = set1.copy()  # 复制集合,返回新的集合
print(set3)

set1.clear()        # 清空集合
print(set1)

输出结果:

5、set.difference(set2):返回两个集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合中;返回一个新的集合;

6、set.difference_update(set2):用于移除两个集合中都存在的元素;和 difference() 方法的区别是,difference_update() 是在原集合(set)中直接移除,没有返回值;

# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}

# 返回一个新的集合,新集合的元素包含在 set1 中,但是不包含在 set2 中
set3 = set1.difference(set2)
print(set3)

# 直接在 set1 中移除 set2 中也存在的同名元素,没有返回值
set1.difference_update(set2)
print(set1)

输出结果:

7、set.intersection(set1, set2 ... etc):返回集合的交集,即返回两个集合中都存在的元素,返回新的集合;

8、set.intersection_update(set1, set2 ... etc):也是用于计算交集,和 intersection() 方法的区别是,intersection_update() 方法是在原集合(set)中直接移除不重叠的元素,没有返回值;

# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}

# 返回一个新的集合,新集合的元素既包含在 set1 中,也包含在 set2 中
set3 = set1.intersection(set2)
print(set3)

# 直接在 set1 中移除 set2 中不存在的元素,保留 set2 中也存在的同名元素,没有返回值
set1.intersection_update(set2)
print(set1)

输出结果:

9、set.symmetric_difference(set2):返回两个集合中不重复的元素集合,即移除两个集合中都存在的元素;

10、set.symmetric_difference_update(set2):移除当前集合(set)中在另外一个指定集合(set2)相同的元素,并将另外一个指定集合(set2)中不同的元素插入到当前集合(set)中;

# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}

# 返回两个集合中不重复的元素集合,即移除两个集合中都存在的元素
set3 = set1.symmetric_difference(set2)
print(set3)

# 直接在 set1 中移除 set2 中也存在的同名元素,并将 set2 中不同的元素插入到 set1 中
set1.symmetric_difference_update(set2)
print(set1)

输出结果:

11、set.union(set1, set2...):返回两个或多个集合的并集,即新的集合包含了所有集合中的所有元素,不过重复的元素只会出现一次;

# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}

# 返回两个或多个集合的并集
set3 = set1.union(set2)
print(set3)

输出结果:

12、set.isdisjoint(set2):用于判断两个集合是否包含相同的元素,如果不包含,返回 True;否则返回 False;

13、set.issubset(set2):用于判断集合的所有元素是否都包含在指定集合(set2)中,,如果是,返回 True;否则返回 False;

14、set.issuperset(set2):用于判断指定集合(set2)的所有元素是否都包含在原始集合中,如果是,返回 True;否则返回 False;

# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"thank", "you"}

print(set1.isdisjoint(set2))    # False
print(set1.issubset(set2))      # False
print(set1.issuperset(set2))    # False

15、set.discard(item):用于移除指定的元素;没有返回值;

16、set.remove(item):用于移除指定的元素,返回移除的元素;如果移除的元素不存在,则会报错;而 discard() 方法不会报错;

# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}

set1.discard("you")     # 移除指定的元素
print(set1)

set1.discard("hello")   # 移除一个不存在的元素时,不执行任何操作
print(set1)

set1.remove("how")      # 移除指定的元素
print(set1)

set1.remove("hello")    # 移除一个不存在的元素,会报错
print(set1)

输出结果:

17、set.pop():用于随机移除一个元素,返回移除的元素;

set1 = {"how", "are", "you"}
print(set1.pop())       # 随机移除一个元素,并返回该元素
print(set1)

print(set1.pop())
print(set1)

print(set1.pop())
print(set1)

输出结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值