【python 基础篇 八】python的常用数据类型操作——集合

liftword1个月前 (03-28)技术文章7

1.集合的基本概念

  • 无序的,不可随机访问的,不可重复的元素集合
  • 与数学中集合的概念类似,可对其进行交,并,差,补等逻辑运算
  • 可分为可变集合和不可变集合
    • set 可变集合 增删改
    • fronzenset 不可变集合 创建好之后,无法增删改

2.集合的定义

2.1 可变集合 set定义

  • s = {1,2,3,4}
  • s = set(iterable) 可以字符串,列表,元组,字典,集合变成一个集合
#可变集合的定义
s = {1,2,3}
print(s,type(s))#输出 {1, 2, 3} 

s1 = set("abchd")#字符串
s2 = set([1,2,3,5])#列表
s3 = set((1,2,3,4,))#元组
s4 = set({1:2,"as":3})
print(s1,type(s1))#输出{'h', 'b', 'a', 'd', 'c'} 
print(s2,type(s2))#输出{1, 2, 3, 5} 
print(s3,type(s3))#输出{1, 2, 3, 4} 
print(s4,type(s4))#输出{1, 'as'} 

2.2 不可变集合 fronzenset 定义

  • fs = frozenset(iterable) 其中iterable可以是字符串,列表,元组,字典等。但是为字典时,只会提取key作为set的元素

2.3 集合定义的注意事项

  • 创建一个空集合时,需要使用set()或者frozenset(),不能使用 s = {} 因为这样会被识别成字典
  • 集合中的元素,必须是可哈希的值。如果一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,那么它就是可哈希的
  • 如果集合中的元素出现重复,则会被合并为1个

3.单一集合的常用操作

3.1 可变集合

  • 增加操作 add()
    • s.add()
  • 删除操作
    • s.remove(element)
      • 指定删除set对象中的一个元素,如果集合中没有这个元素,则返回一个错误
    • s.discare(element)
      • 指定删除set对象中的一个元素,如果集合中没有这个元素,则不做任何事情
    • s.pop()
      • 随机删除并返回一个集合中的元素,若集合为空,则返回一个错误
    • s.clear()
      • 清空一个集合中的所有元素
  • 查询操作
    • 通过for in进行遍历
    • 通过迭代器进行访问
#增加操作
s = {1,2,3,4}
s.add(5)
print(s)#输出 {1, 2, 3, 4, 5}
s.add([1,2,3])#报错 因为[1,2,3]是可变哈希值

#删除操作
s = {1,2,3,4}
result = s.remove(2)
print(result,s)#输出 None {1, 3, 4}  如果集合中没有这个元素,则返回一个错误

s = {1,2,3,4}
result = s.remove(2)
print(result,s)#输出 None {1, 3, 4}  如果集合中没有这个元素,则不做任何操作

s = {1,2,3,4}
result = s.pop()
print(result,s)#输出 1 {2, 3, 4}如果集合为空,则返回一个错误

s = {1,2,3,4}
s.clear()
print(s)#{}

#查询操作
#for in 遍历
s = {1,2,3,4,5}
for x in s:
    print(x)

#通过迭代器
#1.生成一个迭代器
s = {1,2,3,4,5}
its = iter(s)
#2.使用这个迭代器去访问
for x in its:
    print(x)

3.2 不可变集合

  • 不能增删改
  • 查询操作
    • 通过for in进行遍历
    • 通过迭代器进行访问
#查询操作
#for in 遍历
s = frozenset([1,2,3,4,5])
for x in s:
    print(x)

#通过迭代器
#1.生成一个迭代器
s = frozenset([1,2,3,4,5])
its = iter(s)
#2.使用这个迭代器去访问
for x in its:
    print(x)

4. 集合之间操作

4.1 交集

  • intersection(Iterable)
    • 字符串 只判断字符串中的非数字
    • 列表
    • 元组
    • 字典 值判断key
    • 集合
  • &
  • intersection_update(....)
#intersection
s1 = {1,2,3,4,5}
s2 = {4,5,6}
result = s1.intersection(s2)
print(result,type(result))#输出 {4, 5} 

s1 = frozenset([1,2,3,4,5])
s2 = {4,5,6}
result = s1.intersection(s2)
print(result,type(result))#输出 {4, 5}   输出结果为不可变集合  
#当result = s2.intersection(s1)时,输出结果为输出 {4, 5}  集合为可变集合
#交集的输出时,是以前面为基准的

#& 作用与上一个一样
s1 = {1,2,3,4,5}
s2 = {4,5,6}
result = s1 & s2

#intersection_update()的作用和前两者一样,但是会修改原集合。

4.2 并集

  • union()
  • |
  • update()
#union
s1 = {1,2,3,4,5}
s2 = {4,5,6}
result = s1.union(s2)
print(result,type(result))#输出 {1,2,3,4,5,6} 

s1 = frozenset([1,2,3,4,5])
s2 = {4,5,6}
result = s1.union(s2)
print(result,type(result))#输出 {1,2,3,4,5,6}   输出结果为不可变集合  
#当result = s2.intersection(s1)时,输出结果为输出 {1,2,3,4,5,6}  集合为可变集合
#并集的输出时,是以前面为基准的

#| 作用与上一个一样
s1 = {1,2,3,4,5}
s2 = {4,5,6}
result = s1 | s2

#update()的作用和前两者一样,但是会修改原集合。

4.3 差集

  • defference()
  • 算术运算符 -
  • defference_update()

4.4 判定

  • isdisjoint() 两个集合不相交
  • issuperset() 一个集合包含另一个集合全部元素
  • issubset() 一个集合包含于另一个集合部分元素
s1 = {1,2,3,4,5}
s2 = {4,5,6}
print(s1.isdisjoint(s2))#输出 False

s1 = {1,2,3,4,5}
s2 = {3,4,5}
print(s1.issuperset(s2))#输出 True  s2是s1的完全子集合

s1 = {1,2,3,4,5}
s2 = {4,5}
print(s1.issubset(s2))#输出 True  s2是s1的子集合

相关文章

Python 中的集合

集合是 Python 中的一种内置数据结构,表示唯一项的无序集合。集合对于涉及成员资格测试、消除重复条目以及执行数学集运算(如 union、intersection 和 difference)的操作特...

Python快速入门教程5:集合

一、集合简介集合(set)是Python中的一种无序且不重复元素的容器类型。它基于哈希表实现,因此查找和插入操作的时间复杂度接近于O(1)。集合非常适合用于成员测试、去重等场景。创建集合使用花括号{}...

简析python中的集合

一、集合1、集合:set,把不同元素组成一起形成集合,是pthon基本的数据类型,是无序且不重复,特点是数据元素唯一、无序且不可变set(可变)frozenset(不可变)元组和字符串也不可变>...

Python小案例47-集合的操作和方法

Python中的集合是一种无序且不重复的数据结构。它们是可变的,可以添加、删除和修改元素。下面是一些常用的集合操作和方法:创建集合:使用花括号{}来创建一个空集合:my_set = {}使用set()...

第27讲 集合(和猫妹学Python)

小朋友们好,大朋友们好!我们今天学习集合(set)的知识,内容如下:什么是集合(set)集合的创建集合的添加和删除集合的交集、并集、差集什么是集合Python中的集合和数学中的集合概念类似,也是用于保...

Python中列表、元组、字典和集合的异同

在Python中,列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)都是内置的数据结构,它们各有特点和用途。下面是它们的异同点:相同点:都是容器类型,可以用来存储多个数...