集合(set)

目录

一、基本介绍

二、集合的定义

1、集合的定义

2、集合基本使用案例

三、注意事项和使用细节

四、集合常用操作

1、集合常用操作

2、演示集合常用操作

五、集合生成式 


参考文档:内置类型 — Python 3.12.4 文档

一、基本介绍

1、Python支持集合这种数据类型,集合是由不重复元素组成的无序容器

  • 不重复元素:简单的说,就是集合中不会有相同的元素
  • 无序:集合中元素取出的顺序,和你定义时元素顺序并不能保证一致

2、集合对象支持合集、交集、差集等数学运算

3、既然有了列表、元组这些数据容器,Python设计者为什么还提供集合这样的数据类型呢?

在项目中,我们可能有这样的需求:需要记录一些数据,而这些数据必须保证不重复的,而且数据的顺序并没有要求,就可以考虑使用集合

回顾:列表、元组的元素是可以重复,而且有序

二、集合的定义

1、集合的定义

创建一个集合,只要用逗号分隔的不同的数据项,并使用{ }括起来即可,实例如下:

set_a={100,200,300,400,500}

basket={"apple","orange","pear","banana"}

2、集合基本使用案例

# 集合基本使用案例
set_a={100,200,300,400,500}
basket={"apple","orange","pear","banana"}

print(f"set_a的内容是:{set_a} 类型是:{type(set_a)}")
# {400, 100, 500, 200, 300}  <class 'set'>

三、注意事项和使用细节

1、集合是由不重复元素组成的无序容器

# 不重复元素组成,可以理解成会自动去重
basket={'apple','orange','apple','pear','orange','banana'}
print(f"basket:{basket}")  # {'banana', 'pear', 'orange', 'apple'}

# 无序,也就是你定义元素的顺序和取出的顺序不能保证一致
# 集合底层会按照自己的一套算法来存储和取数据,所以每次取出顺序是不变的
set_a={100,200,300,400,500}
print(f"set_a:{set_a}")  # {400, 100, 500, 200, 300}
print(f"set_a:{set_a}")  # {400, 100, 500, 200, 300}
print(f"set_a:{set_a}")  # {400, 100, 500, 200, 300}

2、集合不支持索引

# 集合不支持索引,会报错
set_a={100,200,300,400,500}
# print(set_a[0])

3、既然集合不支持索引,所以对集合进行遍历不支持while,只支持for

# 使用for对集合进行遍历
print("-"*30)
basket={'apple','orange','apple','pear','orange','banana'}
for ele in basket:
    print(ele)

4、创建空集合只能用set(),不能用{ },{ }创建的是空字典

# 创建空集合只能用set(),不能用{ },{ }创建的是空字典
set_b={}  # 这样定义空集合不对,这是一个空字典
set_c=set()  # 创建空集合
print(f"set_b:{set_b} 类型:{type(set_b)}")  # {}   dict
print(f"set_c:{set_c} 类型:{type(set_c)}")  # set()  set

四、集合常用操作

1、集合常用操作

1)文档:内置类型 — Python 3.12.4 文档

2)常用操作一览

2、演示集合常用操作

 1)len(集合):集合元素个数

# 定义集合
basket={'apple','orange','apple','pear','orange','banana'}
# len(集合):集合元素个数
print("basket的元素个数:",len(basket))  # 4

2)x in s:检测 x 是否为 s 中的成员

# x in s:检测 x 是否为 s 中的成员
# 需求:判断apple是否在集合中
print("apple" in basket)  # True

3)add(ele):将元素 ele 添加到集合中

# add(ele):将元素 ele 添加到集合中
# 需求:将grape添加到集合中
basket.add("grape")
print("basket的元素:",basket)  #{'orange', 'grape', 'banana', 'pear', 'apple'}

4)remove(ele):从集合中移除元素ele

# remove(ele):从集合中移除元素ele
# 如果 ele 不存在于集合中,则会引发 KeyError
# 需求:将 apple 从集合中移除
basket.remove("apple")
print("basket的元素:",basket)  # {'pear', 'grape', 'orange', 'banana'}

5)pop():从集合中移除并返回任意一个元素

# pop():从集合中移除并返回任意一个元素
# 如果集合为空,则会引发 KeyError
# 需求:从集合中随机删除一个元素
ele=basket.pop()
print("ele:",ele," 类型是:",type(ele))  # ele:? pear  类型:str
# 注意 pop()操作会影响到原集合
print("basket的元素:",basket)  # {'banana', 'grape', 'orange'}

6)union(*others):返回一个新集合(并集)

# union(*others):返回一个新集合(并集)
# 其中包含来自原集合以及 others 指定的所有集合中的元素
books={'天龙八部','笑傲江湖'}
books_2={'雪山飞狐','神雕侠侣','天龙八部'}
# 需求:将books和books_2进行合集操作(求出在books集合或者在books_2集合的元素)
books_3=books.union(books_2)
# books_3=books|books_2
print("books_3:",books_3)  # {'笑傲江湖', '雪山飞狐', '神雕侠侣', '天龙八部'}

7)intersection(*others):返回一个新集合(交集)

# intersection(*others):返回一个新集合(交集)
# 其中包含原集合以及 others 指定的所有集合中共有的元素
# 需求:将books和books_2进行交集操作(求出既在books集合又在books_2集合的元素)
books_4=books.intersection(books_2)
# books_4=books&books_2
print("books_4:",books_4)  # {'天龙八部'}

8) difference(*others):返回一个新集合(差集)

#  difference(*others):返回一个新集合(差集)
# 其中包含原集合中,在others指定的其他集合中不存在的元素
books={'天龙八部','笑傲江湖'}
books_2={'雪山飞狐','神雕侠侣','天龙八部'}

# 需求:只存在books集合的元素
books_5=books.difference(books_2)
# books_5=books-books_2
print("books_5:",books_5)  # {'笑傲江湖'}

# 需求:只存在books——2集合的元素
books_6=books_2.difference(books)
# books_6=books_2-books
print("books_6:",books_6)  # {'雪山飞狐', '神雕侠侣'}

五、集合生成式 

1、集合生成式就是"生成集合的公式"

2、基本语法

{集合元素表达式 for 自定义变量 in 可迭代对象}

3、实例说明:

{ele*2 for ele in range(1,5)}  => 得到集合含有2,4,6,8这四个元素

但是集合是无序的,所以不能保证元素的顺序一定是2,4,6,8

说明:集合生成式和列表生成式的区别:集合生成式使用{ },列表生成式使用[ ]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值