Python3之集合(Set)浅谈

您所在的位置:网站首页 python的集合怎么用 Python3之集合(Set)浅谈

Python3之集合(Set)浅谈

2023-12-16 13:36| 来源: 网络整理| 查看: 265

日期:2019年12月10日 作者:Commas 注释:学习就是为了忘记,让我们来总结一下Python3的集合吧。 如果您想了解更多有关Python的知识,那么请点【我】 《我的Python浅谈系列目录》

文章目录 一、集合的定义(1)定义(2)特性 二、集合的方法(1)增删操作(2)判断操作(3)交集(4)反交集(交集取反)(5)并集(6)差集 三、利用集合特性给列表去重

一、集合的定义 (1)定义 数学: 集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成集合的这些对象则称为该集合的元素。Python: 集合(Set)是一个无序的不重复元素序列。 # 创建集合的方法: # NO1:{}法 num_set = {1, 2, 3} print(num_set) # {1, 2, 3} print(type(num_set)) # # NO2:set() num_set = set([1, 2, 3]) print(num_set) # {1, 2, 3} print(type(num_set)) # empty_set = set() # 空集合 print(empty_set) # set() print(type(empty_set)) #

温馨提醒: 创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典的。

创建格式:

(2)特性 确定性 元素要么在集合内,要么不在集合内,一定是确定的。互异性 在同一个集合中,元素是唯一的,表现为互异性。无序性 每个元素的地位都是相同的,元素之间是无序的。 二、集合的方法

获取“字典方法”的方法如下: Python语句:print(dir(set())) 控制台输出: [‘and’, ‘class’, ‘contains’, ‘delattr’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘iand’, ‘init’, ‘init_subclass’, ‘ior’, ‘isub’, ‘iter’, ‘ixor’, ‘le’, ‘len’, ‘lt’, ‘ne’, ‘new’, ‘or’, ‘rand’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘ror’, ‘rsub’, ‘rxor’, ‘setattr’, ‘sizeof’, ‘str’, ‘sub’, ‘subclasshook’, ‘xor’, ‘add’, ‘clear’, ‘copy’, ‘difference’, ‘difference_update’, ‘discard’, ‘intersection’, ‘intersection_update’, ‘isdisjoint’, ‘issubset’, ‘issuperset’, ‘pop’, ‘remove’, ‘symmetric_difference’, ‘symmetric_difference_update’, ‘union’, ‘update’]

(1)增删操作 方法说明add(element)添加一个元素element到集合clear()清空这个集合中的所有元素copy()返回一个浅复制集合的副本update(*s:Iterable)给集合添加元素pop()随机移除并返回一个元素,若集合为空集合,则抛出KeyError异常remove(element)移除指定元素element,若移除的元素不在该集合内,则抛出KeyError异常discard(element)移除指定元素element,若移除的元素不在该集合内,则不做任何操作 empty_set = set() print(empty_set) # set() empty_set.add(1) # {1} empty_set.add("1") # {1, '1'} empty_set.update({'a', 'b'}) print(empty_set) # {'a', 1, 'b', '1'} empty_set.clear() print(empty_set) # set() str_set = {'a', 'b', 'c', '1', '2', '3'} print(str_set) # {'1', '2', 'a', '3', 'b', 'c'} print(str_set.pop()) # 1 print(str_set) # {'2', 'a', '3', 'b', 'c'} str_set.remove('a') print(str_set) # {'2', '3', 'b', 'c'} str_set.discard('q') # do nothing print(str_set) # {'2', '3', 'b', 'c'} (2)判断操作 方法说明isdisjoint(*s:Iterable)判断两个集合有交集,若没有则返回True,若有则返回Falseissubset(*s:Iterable)判断指定集合是否为该方法参数集合的子集issuperset(*s:Iterable)判断该方法的参数集合是否为指定集合的子集 num1_set = {1, 2} num2_set = {1, 2, 3} print(num2_set.isdisjoint(num1_set)) # False print(num2_set.issubset(num1_set)) # False print(num2_set.issuperset(num1_set)) # True (3)交集

在这里插入图片描述

方法说明intersection(*s:Iterable)返回两个集合的交集(新集合)intersection_update(*s:Iterable)返回一个集合的交集,不同于intersection()方法(返回一个新集合),而是直接在第一个集合中移除不同的元素 # NO1:使用【&】取交集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set & num2_set print(new_num_set) # {3, 4} # NO2:使用【intersection()方法】取交集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set.intersection(num2_set) print(new_num_set) # {3, 4} # NO3:使用【intersection_update()方法】取交集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} num1_set.intersection_update(num2_set) print(num1_set) # {3, 4} num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} num2_set.intersection_update(num1_set) print(num2_set) # {3, 4} (4)反交集(交集取反)

在这里插入图片描述

方法说明symmetric_difference(*s:Iterable)返回两个集合中不重复的元素集合。symmetric_difference_update(*s:Iterable)移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 # NO1:使用【^】取反交集(交集取反) num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set ^ num2_set print(new_num_set) # {1, 2, 5, 6} # NO2:使用【symmetric_difference()方法】取反交集(交集取反) num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set.symmetric_difference(num2_set) print(new_num_set) # {1, 2, 5, 6} # NO3:使用【symmetric_difference_update()方法】取反交集(交集取反) num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} num1_set.symmetric_difference_update(num2_set) print(num1_set) # {1, 2, 5, 6} num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} num2_set.symmetric_difference_update(num1_set) print(num2_set) # {1, 2, 5, 6} (5)并集

在这里插入图片描述

方法说明union(*s:Iterable)返回两个或多个集合的并集(新集合) # NO1:使用【|】取并集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set | num2_set print(new_num_set) # {1, 2, 3, 4, 5, 6} # NO2:使用【union()方法】取并集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set.union(num2_set) print(new_num_set) # {1, 2, 3, 4, 5, 6} (6)差集

(i)A-B差集示意图:在这里插入图片描述 (ii)B-A差集示意图:在这里插入图片描述

方法说明difference(*s:Iterable)返回两个或多个集合之间的差集(新集合)difference_update(*s:Iterable)返回一个集合的差集,不同于difference()方法(返回一个新集合),而是直接在第一个集合中移除相同的元素 # NO1:使用【-】取交集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set - num2_set print(new_num_set) # {1, 2} new_num_set = num2_set - num1_set print(new_num_set) # {5, 6} # NO2:使用【difference()方法】取交集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} new_num_set = num1_set.difference(num2_set) print(new_num_set) # {1, 2} new_num_set = num2_set.difference(num1_set) print(new_num_set) # {5, 6} # NO3:使用【intersection_update()方法】取交集 num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} num1_set.difference_update(num2_set) print(num1_set) # {1, 2} num1_set = {1, 2, 3, 4} num2_set = {3, 4, 5, 6} num2_set.difference_update(num1_set) print(num2_set) # {5, 6} 三、利用集合特性给列表去重 num_list = [1, 1, 2, 3, 3, 3] num_set = set(num_list) # 集合互异性去重 num_list = list(num_set) # 集合转换回列表 print(num_set) # {1, 2, 3} print(num_list) # [1, 2, 3]

本文参考: 1、https://baike.baidu.com/item/%E9%9B%86%E5%90%88/2908117?fr=aladdin#1 2、https://www.runoob.com/python3/python3-set.html

版权声明:本文为博主原创文章,如需转载,请给出: 原文链接:https://blog.csdn.net/qq_35844043/article/details/103456195



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3