ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python容器相关类 -- 集合(set)和双端队列(deque)

2020-02-29 17:57:48  阅读:280  来源: 互联网

标签:deque set 双端 元素 update add 集合 difference


  在Python中,除了列表(list)、元组(tuple)、字典(dict)等常见的容器类型外,还提供了集合(set)、双端队列(deque)等数据类型。

  set:

    1,不能记录元素的的添加顺序。

    2,元素不可重复。(可以利用这一点为列表的元素去重)

    3,是可变容器,可以改变容器中的元素。

    4,还有一个不可变版本 -- frozenset。

  set 的内置方法:

1 >>> [e for e in dir(set) if not e.startswith('_')]
2 ['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 

'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove',

'symmetric_difference', 'symmetric_difference_update', 'union', 'update'] 3 >>>

   set中的方法:

  <=,相当于调用了issubset()方法,判断前面的集合是否为后面集合的子集。

  >=,相当于调用了issuperset()方法,判断前面的集合是否为后面集合的父集。

  -,相当于调用了difference()方法,用前面的集合减去后面的集合。

  &,相当于调用了intersection方法,用于获取两个集合的交集。

  ^,计算两个集合异或的结果,就是用两个集合的并集减去交集的元素。

>>> set_a = {1}
>>> set_a.add(2)   #为集合添加元素
>>> set_a
{1, 2}
>>> set_a.remove(1)  #移除集合中的元素,但是当移除集合中不存在的元素时会报错
>>> set_a
{2}
>>> set_a.remove(1)  #当移除集合中不存在的元素时会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 1
>>> set_a.add(1)
>>> set_a
{1, 2}
>>> set_a.discard(1)  #移除集合中的元素,当移除集合中不存在的元素时不会报错
>>> set_a
{2}
>>> set_a.discard(1)  #当移除集合中不存在的元素时不会报错
>>> set_a
{2}
>>> set_b = set()    #使用集合构造函数创建集合
>>> set_b.add(1)
>>> set_b.add(2)
>>> set_b.add(3)
>>> set_a.issubset(set_b)   #判断集合a是否为集合b的子集
True
>>> set_a.issuperset(set_b) #判断集合a是否是集合b的父集
False
>>> set_c = set_b.difference(set_a)   #用集合b减去集合a中的元素,得到一个新的集合c
>>> set_c
{1, 3}
>>> set_b.difference_update(set_a)   #用集合b减去集合a中的元素,改变集合b
>>> set_b
{1, 3}
>>>
>>> set_c.clear()        #清除集合c中的元素
>>> set_c
set()
>>> set_b.add(2)
>>> set_b
{1, 2, 3}
>>> set_a
{2}
>>> set_c = set_b.intersection(set_a)   #计算两个集合的交集,得到一个新的集合c
>>> set_c
{2}
>>> set_b.intersection_update(set_a)  #计算两个集合的交集,改变集合b
>>> set_b
{2}

>>> set_b.add(1) >>> set_b.add(3) >>> set_a {2} >>> set_b {1, 2, 3} >>> set_a.add(4) >>> set_c = set_a.union(set_b) #计算两个集合的并集,得到一个新的集合 >>> set_c {1, 2, 3, 4} >>> set_a.update(set_b) #计算两个集合的并集,改变集合a >>> set_a {1, 2, 3, 4}
>>> set_a {1, 2, 3, 4} >>> set_b {1, 2, 3}>>> set_a.isdisjoint(set_b) #判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 False >>> set_b.isdisjoint(set_b) False >>> set_b.isdisjoint(set_a) False >>> set_a {1, 2, 3, 4} >>> set_b {1, 2, 3} >>> set_a.symmetric_difference(set_b) #返回两个集合中不重复的元素集合。 {4} >>> set_a.symmetric_difference_update(set_b) #移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中 >>> set_a {4} >>>

 

  双端队列(deque):

    

标签:deque,set,双端,元素,update,add,集合,difference
来源: https://www.cnblogs.com/xuxianshen/p/12384316.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有