热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

集合python_Python之集合详解

定义:1.不同元素组成2.无序3.集合中的元素必须是不可变类型创建集合s{1,2,3,4,5,6,7,8}1.定义可变集合set_testset(

定义:

1.不同元素组成

2.无序

3.集合中的元素必须是不可变类型

创建集合

s = {1,2,3,4,5,6,7,8}

1.定义可变集合

>>> set_test = set('hello')

>>> set_test

{'h', 'l', 'e', 'o'}

2.定义不可变集合

>>> set_test = set('hello')

>>> set_test

{'h', 'l', 'e', 'o'}  # 由此可见集合中的元素不可重复,都是不同的

>>> n_set_test = frozenset(set_test)

>>> n_set_test

frozenset({'h', 'l', 'e', 'o'})

集合运算

集合之间也可进行数学集合运算(例如:并集、交集等),可用相应的操作符或方法来实现。

子集

子集,为某个集合中一部分的集合,故亦称部分集合。

使用操作符 <执行子集操作&#xff0c;同样地&#xff0c;也可使用方法 issubset() 完成。

>>> A &#61; set(&#39;abcd&#39;)

>>> B &#61; set(&#39;cdef&#39;)

>>> C &#61; set("ab")

>>> C

True # C 是 A 的子集

>>> C

False

>>> C.issubset(A)

True

并集

一组集合的并集是这些集合的所有元素构成的集合&#xff0c;而不包含其他元素。

使用操作符 | 执行并集操作&#xff0c;同样地&#xff0c;也可使用方法 union() 完成。

>>> A | B

{&#39;c&#39;, &#39;b&#39;, &#39;f&#39;, &#39;d&#39;, &#39;e&#39;, &#39;a&#39;}

>>> A.union(B)

{&#39;c&#39;, &#39;b&#39;, &#39;f&#39;, &#39;d&#39;, &#39;e&#39;, &#39;a&#39;}

交集

两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素&#xff0c;而没有其他元素的集合。

使用 & 操作符执行交集操作&#xff0c;同样地&#xff0c;也可使用方法 intersection() 完成。

>>> A & B

{&#39;c&#39;, &#39;d&#39;}

>>> A.intersection(B)

{&#39;c&#39;, &#39;d&#39;}

差集

A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合

使用操作符 - 执行差集操作&#xff0c;同样地&#xff0c;也可使用方法 difference() 完成。

>>> A - B

{&#39;b&#39;, &#39;a&#39;}

>>> A.difference(B)

{&#39;b&#39;, &#39;a&#39;}

对称差

两个集合的对称差是只属于其中一个集合&#xff0c;而不属于另一个集合的元素组成的集合。

使用 ^ 操作符执行差集操作&#xff0c;同样地&#xff0c;也可使用方法 symmetric_difference() 完成。

>>> A ^ B

{&#39;b&#39;, &#39;f&#39;, &#39;e&#39;, &#39;a&#39;}

>>> A.symmetric_difference(B)

{&#39;b&#39;, &#39;f&#39;, &#39;e&#39;, &#39;a&#39;}

集合方法

1.add 向集合中添加元素

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s.add("s")

>>> s

{1, 2, 3, 4, 5, 6, &#39;s&#39;}

2.clear 清空集合

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s.clear()

>>> s

set()

3.copy 返回集合的浅拷贝

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> new_s &#61; s.copy()

>>> new_s

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

4.pop 删除并返回任意的集合元素&#xff08;如果集合为空&#xff0c;会引发 KeyError&#xff09;

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s.pop()  # pop删除时是无序的随机删除

1

>>> s

{2, 3, 4, 5, 6}

5.remove 删除集合中的一个元素&#xff08;如果元素不存在&#xff0c;会引发 KeyError&#xff09;

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s.remove(3)

>>> s

{1, 2, 4, 5, 6}

6.discard 删除集合中的一个元素&#xff08;如果元素不存在&#xff0c;则不执行任何操作&#xff09;

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s.discard("sb")

>>> s

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

7.intersection 将两个集合的交集作为一个新集合返回

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s2 &#61; {3, 4, 5, 6, 7, 8}

>>> s.intersection(s2)

{3, 4, 5, 6}

>>> s&s2  # 可以达到相同的效果

{3, 4, 5, 6}

8.union 将集合的并集作为一个新集合返回

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s2 &#61; {3, 4, 5, 6, 7, 8}

>>> print(s.union(s2))

{1, 2, 3, 4, 5, 6, 7, 8}

>>> print(s|s2) # 用 | 可以达到相同效果

{1, 2, 3, 4, 5, 6, 7, 8}

9.difference 将两个或多个集合的差集作为一个新集合返回

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s2 &#61; {3, 4, 5, 6, 7, 8}

>>> print("差集:",s.difference(s2)) # 去除s和s2中相同元素&#xff0c;删除s2 保留s中剩余元素

差集: {1, 2}

>>> print("差集:",s2.difference(s))  # 去除s和s2中相同元素&#xff0c;删除s2 保留s2中剩余元素

差集: {8, 7}

>>> print("差集:",s - s2) # 符号 - 可以达到相同结果

差集: {1, 2}

>>> print("差集:",s2 - s) # 符号 - 可以达到相同结果

差集: {8, 7}

10. symmetric_difference 将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分&#xff0c;其余保留)

>>> s &#61; {1, 2, 3, 4, 5, 6}

>>> s2 &#61; {3, 4, 5, 6, 7, 8}

>>> s.symmetric_difference(s2)

{1, 2, 7, 8}

11.update 用自己和另一个的并集来更新这个集合

>>> s &#61; {&#39;p&#39;, &#39;y&#39;}

>>> s.update([&#39;t&#39;, &#39;h&#39;, &#39;o&#39;, &#39;n&#39;]) # 添加多个元素

>>> s

{&#39;p&#39;, &#39;t&#39;, &#39;o&#39;, &#39;y&#39;, &#39;h&#39;, &#39;n&#39;}

>>> s.update([&#39;H&#39;, &#39;e&#39;], {&#39;l&#39;, &#39;l&#39;, &#39;o&#39;}) # 添加列表和集合

>>> s

{&#39;p&#39;, &#39;H&#39;, &#39;t&#39;, &#39;l&#39;, &#39;o&#39;, &#39;y&#39;, &#39;e&#39;, &#39;h&#39;, &#39;n&#39;}

12.intersection_update() 用自己和另一个的交集来更新这个集合

>>> s &#61; {&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;q&#39;}

>>> s2 &#61; {&#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;}

>>> s.intersection_update(s2) # 相当于s &#61; s - s2

>>> s

{&#39;c&#39;, &#39;d&#39;}

13.isdisjoint()  如果两个集合有一个空交集&#xff0c;返回 True

>>> s &#61; {1, 2}

>>> s1 &#61; {3, 4}

>>> s2 &#61; {2, 3}

>>> s.isdisjoint(s1)

True # s 和 s1 两个集合的交集为空返回 True

>>> s.isdisjoint(s2)

False # s 和 s2 两个集合的交集为 2 不是空 所有返回False

14.issubset() 如果另一个集合包含这个集合&#xff0c;返回 True

>>> s &#61; {1, 2, 3}

>>> s1 &#61; {1, 2, 3, 4}

>>> s2 &#61; {2, 3}

>>> s.issubset(s1)

True # 因为 s1 集合 包含 s 集合

>>> s.issubset(s2)

False # s2 集合 不包含 s 集合

15.issuperset()  如果这个集合包含另一个集合&#xff0c;返回 True

>>> s &#61; {1, 2, 3}

>>> s1 &#61; {1, 2, 3, 4}

>>> s2 &#61; {2, 3}

>>> s.issuperset(s1)

False # s 集合不包含 s1 集合

>>> s.issuperset(s2)

True # s 集合包含 s2 集合

16.difference_update() 从这个集合中删除另一个集合的所有元素

>>> s &#61; {1, 2, 3}

>>> s1 &#61; {1, 2, 3, 4}

>>> s2 &#61; {2, 3}

>>> s.difference_update(s2)

>>> s

{1} # s2中的2,3 s集合中也有2,3 所以保留1

>>> s1.difference_update(s2)

>>> s1

{1, 4}

17.symmetric_difference_update() 用自己和另一个的对称差来更新这个集合

>>> s &#61; {1, 2, 3}

>>> s1 &#61; {1, 2, 3, 4}

>>> s2 &#61; {2, 3}

>>> s1.symmetric_difference_update(s)

>>> s1

{4}

>>> s1.symmetric_difference_update(s2)

>>> s1

{2, 3, 4}

>>> s.symmetric_difference_update(s2)

>>> s

{1}

集合与内置函数

下述内置函数通常作用于集合&#xff0c;来执行不同的任务。

函数

描述

all()

如果集合中的所有元素都是 True&#xff08;或者集合为空&#xff09;&#xff0c;则返回 True。

any()

如果集合中的所有元素都是 True&#xff0c;则返回 True&#xff1b;如果集合为空&#xff0c;则返回 False。

enumerate()

返回一个枚举对象&#xff0c;其中包含了集合中所有元素的索引和值&#xff08;配对&#xff09;。

len()

返回集合的长度&#xff08;元素个数&#xff09;

max()

返回集合中的最大项

min()

返回集合中的最小项

sorted()

从集合中的元素返回新的排序列表&#xff08;不排序集合本身&#xff09;

sum()

返回集合的所有元素之和



推荐阅读
  • 集合set集合是可变的容器集合内的数据对象都是唯一的(不能重复多次的)集合是无序的存储结构,集合中的数据没有先后关系集合内的元素必须是不可 ... [详细]
  • 一.元祖类型 (tuple)1.什么是元祖?用途:用于存放多个值,当存放的多个值只有读的需求没有改变的需求时,用元祖最合适.定义方式:在()内用逗号分隔开的多个任意类型的值t(1, ... [详细]
  • 第八章 元组与集合
    目录​一、元组二、集合三、集合的数学操作四、集合的相关操作五、集合间的关系六、列表、元组、集合、字典区别一、元组元组是python内置的数据结构之一, ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 用户视图(查看运行状态或其他参数)系统视图(配置设备的系统参数)system-viewEntersystemview,returnuservi ... [详细]
  • 这篇文章主要讲解了“怎么用Python写一个电信客户流失预测模型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入, ... [详细]
  • steps/train_mono.sh
    定义拓扑结构、参数初始化$gmm-init-mono--shared-phones$langphonessets.int--train-feats$featssubset-fe ... [详细]
  • 转载请注明原文地址:http:www.cnblogs.comygj0930p6409067.html1:HammingdistanceTheHammin ... [详细]
  • 引子:Question:CanyoutellmewhatthedifferenceoftwoSQLstatementsatperformanceofexecution ... [详细]
author-avatar
ryan__bug
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有