在python中,普通集合是可变数据类型

通过以下案例说明:

>>> s = {1, 2, 3, 4}
>>> id(s)
2108634636808
>>> s.add(5)
>>> s
{1, 2, 3, 4, 5}
>>> id(s)
2108634636808

在增加集合中的元素后,集合内存地址并没有改变,说明集合是可变数据类型

集合的重要特点是去重:

>>> s = {1, 2, 2, 3}
>>> s
{1, 2, 3}

集合的操作

常见之增删改:

>>> s = {1, 2, 3, 4, 5, 6}              
>>> s.add(7)                         #增加   
>>> s
{1, 2, 3, 4, 5, 6, 7}
>>> s.discard(8)                       #discard删除不存在的元素不会报错
>>> s
{1, 2, 3, 4, 5, 6, 7}
>>> s.discard(7)
>>> s
{1, 2, 3, 4, 5, 6}
>>> s.remove(8)                       #remove删除不存在的元素会报错
Traceback (most recent call last):
File "<pyshell#233>", line 1, in <module>
s.remove(8)
KeyError: 8
>>> s.remove(6)
>>> s
{1, 2, 3, 4, 5}
>>> s.pop()
1
>>> s
{2, 3, 4, 5}

>>> s.update({1,2,3})                    #批量增加并自动去重
  >>> s
  {1, 2, 3, 4, 5}

>>> s.clear()                         #清空集合元素

>>> s

set()

#集合没有查询功能

集合的重要功能,关系测试:

>>> s1 = {1, 2, 3, 4}
>>> s2 = {2, 4, 5, 9}
#s1中有而s2中没有的
>>> s1 - s2
{1, 3}
>>> s1.difference(s2)
{1, 3}
#S1和s2的并集
>>> s1 | s2
{1, 2, 3, 4, 5, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 9}
#S1和s2的交集
>>> s1 & s2
{2, 4}
>>> s1.intersection(s2)
{2, 4}
#s1和s2的对称差集(并集-交集):
>>> s1.symmetric_difference(s2)
{1, 3, 5, 9}
#将s1-s2结果赋给s1  
>>> s1.difference_update(s2)
>>> s1
{1, 3}
#将s1,s2的交集赋给s1
>>> s1 = {1, 2, 3, 4}
>>> s2 = {2, 4, 5, 9}
>>> s1.intersection_update(s2)
>>> s1
{2, 4}
#将s1,s2的对称差集赋给s1
>>> s1 = {1, 2, 3, 4}
>>> s2 = {2, 4, 5, 9}
>>> s1.symmetric_difference_update(s2)
>>> s1
{1, 3, 5, 9}

集合的关系判断

>>> s1 = {1, 2}
>>> s2 = {1, 2, 3}
>>> s1.issubset(s2) #A是否是B的子集
True
>>> s2.issuperset(s1) #A是否是B的父级
True
>>> s1 <= s2       #简写形式
True
>>> s1.isdisjoint(s2) #判断A和B是否不相交
False

下面简单认识一下不可变集合----frozenset:

>>> s = {1, 2, 3, 4}
>>> s1 = frozenset(s)
>>> s1
frozenset({1, 2, 3, 4})

通过frozenset函数将集合变成不可变集合,显然不可变集合就没了上面普通集合的增删操作,而仅仅保留关系测试和关系判断的操作,使用方法同上。

python中的集合的更多相关文章

  1. python 中的集合set

    python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或 ...

  2. Python中的集合类型分类和集合类型操作符解析

    集合类型    数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements).    Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...

  3. python学习之【第七篇】:Python中的集合及其所具有的方法

    1.前言 python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重. 集合是无序的,集合中的元素必须是不可变类型.集合可以作为字典的key. ...

  4. 14.python中的集合

    什么是集合?正如其字面的意思,一堆东西集中合并到一起.乍一听貌似和容器没什么差别,嗯,好吧,集合也算是一种容器. 在学习这个容器有什么不同之前,先看看集合是如何创建的: a = set() #可变集合 ...

  5. 8、python中的集合

    集合是python中无序.可变的数据结构.集合与字典类似,集合中的元素必须是可哈希的(等同于字典中的键),也就是说集合中的元素是唯一.不可变的数据类型.这里前面说集合可变,后面又说集合中的元素不可变是 ...

  6. python中的集合、元组和布尔

    #元组,元组跟列表一样,只不过列表可读可写,而元组一般用来只读,不修改#python中不允许修改元组的数据,也包括不能删除其中的元素. t1 = ('a','b','c','d','s','a') & ...

  7. Python 中的集合 --set

    前言 在Python中,我们用[]来表示列表list,用()来表示元组tuple,那{}呢?{}不光可用来定义字典dict,还可以用来表示集合set. 集合 set 集合(set)是一个无序的不重复元 ...

  8. python 中的集合(set) 详解

    在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种. 创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方 ...

  9. python中set集合

    一.set集合的特性 访问速度快 天生解决重复问题 二.set变量申明 s1 = set() s2 = set([1,2,3]) 备注:第二种方式在set类中直接传入一个序列. 三.set类中方法大全 ...

随机推荐

  1. Python【每日一问】09

    问:请分别写一段Python代码实现一下功能: (1)计算一个文件中的大写字母数量 (2)输入中文,返回相应的拼音,并写入文件中 答: (1)计算一个文件中的大写字母数量 file_name = &q ...

  2. TableVie优化方法和优化机制

    1,UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染) (1)缓存高度:当我们创建frame模型的时候,计算出来cell的高度的时候,我们可以将cell的高度缓存 ...

  3. [UE4]插值interp

    插值 在两个数之间补充一些数,让过渡变得更自然. UE4引擎提供的插值 一.CInterp To:颜色(Color)插值.C:Color,颜色. 二.FInterp To.FInterp To Con ...

  4. 软件推荐----数据库数据处理Navicat Premium

    一般情况下,企业对数据库的管控很严,通常管控分成以下: 对整台服务器管理权限,如:操作系统Administrator+SA 对单个数据库(Oracle的表空间)完全权限,如:SQL DB_Owner ...

  5. CSS——Flex

    任何一个容器都可以指定为Flexbox布局 .flex-container { display: -webkit-flex; /* Safari */ display: flex; } 行内元素可以指 ...

  6. python中令人惊艳的小众数据科学库

    Python是门很神奇的语言,历经时间和实践检验,受到开发者和数据科学家一致好评,目前已经是全世界发展最好的编程语言之一.简单易用,完整而庞大的第三方库生态圈,使得Python成为编程小白和高级工程师 ...

  7. 用ASP.NET_Regsql.exe创建Session数据库

    CMD: C:\Users\ZhangSC>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe -S ZhangS ...

  8. Python校验用户名是否合法示例

    #校验用户名是否合法例子: #输入账号密码 #input #如果账号存在提示已经注册,如果不存在的,就可以注册 all_users [] #不能为空 #strip() #用户名长度6-12之间 #le ...

  9. jquery选择器问题(找东西超级有用)

    $("[class='slider-container theme-green']").css('width','100%');就这么一行代码,很简单,这样就很容易找到唯一元素

  10. ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction解决办法

    一.问题描述: 同事反馈线上一个表有其中一条数据无法删除,其他都正常,我拿到删数据的sql,尝试执行,报错如下: mysql> delete from facebook_posts where ...