Python集合详解

简介: Python集合详解:创建集合、添加元素、删除元素、清空集合,集合求交集、并集、差集

前言

在上一篇《Python元组与字典用法详解》中,我们介绍了元组和字典的用法,简单回顾一下:

元组:

  • 创建元组:( )和tuple()函数两种方式

字典:

  • 创建字典:{ }和dict()函数两种方式
  • 访问字典元素:dictname[key]、dictname.get(key[,default])
  • 字典添加键值对:dictname[key] = value
  • 更新字典:dictname.update({"key": value})
  • 删除字典键值对:pop() 用来删除指定的键值对,而popitem() 用来随机删除一个键值对
  • 深拷贝与浅拷贝:浅拷贝在原字典内容发生变更后也会跟着变更,深拷贝会生成一个新的内存地址、及时原有字典内容发生变更也不受影响

而今天的主题是Python集合,Python 中的集合,是一种无序的、可变的序列,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:

{element1,element2,...,elementn}

一、创建集合

1.使用 {} 创建

在 Python 中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,其语法格式如下:

setname = {element1,element2,...,elementn}

set1 = {1, 2, 3, 4, 5, 6}

2.set()函数创建集合

set() 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。该函数的语法格式如下:

setname = set(iteration)

# 使用set()方法创建list1 = [5, 6, 7, 8, 9]
tup1 = ('a', 'b', 'c')
set2 =set(list1)  # 将列表转换为集合set3 =set(tup1)  # 将元组转换为集合,转换结果是无序的print(set2)  # {5, 6, 7, 8, 9}print(set3)  # {'a', 'c', 'b'}

二、向集合中添加元素

set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为:

setname.add(element)

# 向集合中添加元素set1.add('e')  # add()方法添加元素print(set1)  # {1, 2, 3, 4, 5, 6, 'e'}set1.update(tup1)  # update()方法添加元素print(set1)  # {1, 2, 3, 4, 5, 6, 'c', 'e', 'b', 'a'}

三、从集合中删除元素

删除现有 set 集合中的指定元素,可以使用 remove() 方法,该方法的语法格式如下:

setname.remove(element)

# 集合删除元素set1.remove('a')  # 删除指定元素print(set1)  # {1, 2, 3, 4, 5, 6, 'e', 'b', 'c'}set1.pop()  # 从最开始位置删除元素print(set1)  # {2, 3, 4, 5, 6, 'c', 'b', 'e'}set1.discard('e')  # 删除指定元素,不存在则不做任何操作print(set1)  # {2, 3, 4, 5, 6, 'c', 'b'}set1.clear()  # 清空集合print(set1)  # set()

四、清空集合

清空现有 set 集合中的所有元素,可以使用 clear() 方法,该方法的语法格式如下:

setname.clear()

list1 = [1, 3, 4, 5, 6, 6]
set2 =set(list1)
print(set2)  # {1, 3, 4, 5, 6}set2.clear()
print(set2)  # set()

五、集合求交集、并集、差集

1.通过python运算符

运算操作

Python运算符

含义

例子

交集

&

取两集合公共的元素

set1 & set2 >> [3]

并集

|

取两集合全部的元素

set1 | set2 >> [1,2,3,4,5]

差集

-

取一个集合中另一个集合没有的元素

set1 - set2 >> [1,2]

set2 - set1 >> [4,5]

对称差集

^

取集合A和B中不属于A&B的元素

set1 ^ set2 >> [1,2,4,5]

2.通过函数

方法名

语法格式

含义

difference()

set3 = set1.difference(set2)

将set1中有而set2中没有的元素赋给set3

intersection()

set3 = set1.intersection(set2)

取set1和set2的交集,赋给set3

union()

set3 = set1.difference(set2)

取set1和set2的并集,赋给set3

示例:

# 集合交集、并集、差集set_a = {'a', 'b', 'c', 'd'}
set_b = {'c', 'd', 'e', 'f'}
# 求交集ict = set_a.intersection(set_b)  # intersection()方法print(ict)  # {'c', 'd'}set_ict = set_a & set_b  # 使用 & 运算符print(set_ict)  # {'c', 'd'}# 求并集union = set_a.union(set_b)  # union()方法print(union)  # {'f', 'd', 'e', 'b', 'c', 'a'}set_union = set_a | set_b  # 使用 | 运算符print(set_union)  # {'f', 'c', 'b', 'd', 'a', 'e'}# 求差集diff= set_a.difference(set_b)  # 使用difference()方法print(diff)  # {'b', 'a'}  set_diff = set_a - set_b  # 使用 - 运算符print(set_diff)  # {'a', 'b'}

六、集合其他用法

1.查看集合所有方法

通过 dir(set) 命令可以查看它有哪些方法:

>>> dir(set)
['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 
'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

2.复制集合

# 复制集合set4 = {1, 3, 5, 7, 9}
set5 = set4.copy()
print(set5)  # {1, 3, 5, 7, 9}

3.列表去重

# 列表去重list2 = [1, 1, 1, 3, 4, 5, 6, 6]
set6 =set(list2)
print(set6)  # {1, 3, 4, 5, 6}list3 = list(set6)
print(list3)  # [1, 3, 4, 5, 6]

总结

列表和元组都是有序序列,而字典、集合都是无序序列,不能通过索引(index)获取元素;

列表、字典、集合都是可变序列,而元组是不可变序列,一旦创建,元素就不能发生变化;

相关文章
|
3月前
|
数据处理 Python
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
119 1
|
1天前
|
Python
python推导式-列表,元组,字典,集合推导式
这篇文章介绍了Python中的推导式,包括列表推导式、元组推导式、字典推导式和集合推导式,提供了它们的基本格式和示例代码,并解释了推导式如何简化循环和条件判断的代码编写。
|
1月前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
30天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
1月前
|
存储 索引 Python
五:《Python基础语法汇总》— 列表&元组&集合
本篇文章讲解了关于列表;元组和集合这三个基本数据类型的常用方法与函数。及同一性操作符;成员判断符;浅拷贝与深拷贝等多方面的知识点
25 4
|
1月前
|
算法 数据处理 Python
Python中的集合的运算
Python中的集合的运算
|
1月前
|
Python
python集合类型 (Set Types)
【8月更文挑战第3天】
57 9
|
1月前
|
Python
【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
解决LeetCode平台《剑指 Offer II 082. 含有重复元素集合的组合》题目的Python代码实现,通过深度优先搜索算法找出所有和为特定目标值的数字组合,并在搜索过程中通过排序和跳过重复元素来避免解集中出现重复组合。
37 2
|
30天前
|
Python
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
25 0
|
1月前
|
数据挖掘 数据处理 Python
数据处理新纪元:Python集合内置方法让你告别繁琐,轻松驾驭海量数据!
【8月更文挑战第22天】本文通过电商用户购买数据案例,展示了Python集合在高效数据处理中的应用。首先,利用Pandas读取`purchase_data.csv`文件,并通过内置方法快速概览数据。接着,创建商品ID集合进行数据分析,运用集合的并集、交集及差集等运算揭示用户购买行为模式。最后,借助集合推导式精简创建用户购买商品集合的过程,全方位呈现集合的强大功能。
21 0