Python的集合类型详解17

时间:2021-10-30 17:00:02

一,集合

    1.集合一组无序排列的可哈希的值;

    2.支持集合关系测试,例如:in、not in、迭代等;

        例如:

In [35]: s1=set(1,2,3)---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-35-6a12ec048247> in <module>()
----> 1 s1=set(1,2,3)

TypeError: set expected at most 1 arguments, got 3

In [36]: s1=set([1,2,3])

In [37]: s1
Out[37]: {1, 2, 3}

In [38]: type(s1)
Out[38]: set

    3.不支持索引、元素获取和切片;

    4.集合的类型:set()、frozenset()

    5.集合没有特定语法格式,只能通过工厂函数创建;

        工厂函数:http://www.programgo.com/article/5639846274/

二,集合类型的方法和操作


项目 描述
len(s) 返回s中项目数
s.copy() 制作s的一份副本
s.difference(t) 求差集。返回所有在s中,但不在t中的项目
s.intersection(t) 求交集。返回所有同时在s和t中的项目
s.isdisjoint(t) 如果s和t没有相同项,则返回True
s.issubset(t) 如果s是t的一个子集,则返回True
s.issuperset(t) 如果s是t的一个超级,则返回True
s.symmetric_difference(t) 求对称差集。返回所有在s或t中,但又不同时在这两个集合中的项
s.union(t) 求并集。返回所有在s或t中的项

操作 描述 操作 描述
s | t s和t的并集 len(s) 集合中项数
s & t s和t的交集 max(s) 最大值
s - t 求差集 min(s) 最小值
s ^ t 求对称差集

    例如:

In [40]: set.                            //set方法set.add                          set.intersection                 set.popset.clear                        set.intersection_update          set.removeset.copy                         set.isdisjoint                   set.symmetric_differenceset.difference                   set.issubset                     set.symmetric_difference_updateset.difference_update            set.issuperset                   set.unionset.discard                      set.mro                          set.updateIn [41]: s2 = set([2,3,4])      //并集In [42]: s1 & s2Out[42]: {2, 3}In [43]: s1.symmetric_differences1.symmetric_difference         s1.symmetric_difference_update  In [43]: s1.symmetric_difference(s2)         //对称差集Out[43]: {1, 4}In [44]: s3 = set('xyz')     //迭代In [45]: s3Out[45]: {'x', 'y', 'z'}In [46]: s3.pop()             //删除或弹出元素 Out[46]: 'y'In [47]: s3.pop()Out[47]: 'x'In [48]: s3.pop()Out[48]: 'z'In [49]: s3.pop()---------------------------------------------------------------------------KeyError                                  Traceback (most recent call last)<ipython-input-49-aa97d01de6b1> in <module>()----> 1 s3.pop()KeyError: 'pop from an empty set'In [56]: s3 = set('xyz')             //支持异构In [57]: id(s1)Out[57]: 19454768In [59]: print s1,s3set([1, 2, 3]) set(['y', 'x', 'z'])In [60]: s1.update(s3)In [61]: id(s1)Out[61]: 19454768In [62]: id(s3)Out[62]: 21995832In [63]: print s1set([1, 2, 3, 'y', 'x', 'z'])In [64]: print s3set(['y', 'x', 'z'])In [65]: s1.add(7)      //添加元素In [66]: print s1set([1, 2, 3, 7, 'y', 'x', 'z'])In [67]: s1.add('Jerry')In [68]: print s1set([1, 2, 3, 7, 'y', 'x', 'z', 'Jerry'])

本文出自 “Jessen6的博文” 博客,请务必保留此出处http://zkhylt.blog.51cto.com/3638719/1706881