python---集合

##################################################
##################### 集合 ########################
##################################################
1.集合的应用场景
1)集合是一个无序的,不重复的数据组合。
2)集合可去除列表中重复的元素。
3)集合有其他数据类型没有的属性,即关系测试,包含交集、差集、并集、是否为子集、是否为父集等方法。

2.集合的定义
In [1]: set = {}        ##集合不可以定义为空集合
In [2]: type(set)
Out[2]: dict
In [3]: set = {1,2,3}
In [4]: type(set)
Out[4]: set
In [5]: set = {1,2,3,1,2,3}
In [6]: type(set)
Out[6]: set
In [7]: set = {1,2,3,'hello'}
In [8]: type(set)
Out[8]: set
In [9]: set = {1,2,3,'hello',(1,2,3)}
In [10]: type(set)
Out[10]: set
In [11]: set = {1,2,3,'hello',(1,2,3),[1,2,3]}        ##集合中元素不可以为列表
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
in ()
----> 1 set = {1,2,3,'hello',(1,2,3),[1,2,3]}

TypeError: unhashable type: 'list'
python---集合_第1张图片


3.集合的关系测试操作

1)实现集合的关系的第一种方式:set已有方法实现
• 交集:    list_1.intersection(list_2)
• 并集:    list_1.union(list_2)
• 差集:    list_1.difference(list_2)
        list_2.difference(list_1)
• 对等差分:  list_1.symmetric_difference(list_2)
• 子集:    list_1.issubset(list_2)
• 父集:    list_1.issuperset(list_2)
• 是否没有交集:  list_1.isdisjoint(list_2)
In [14]: list_1 = {1,2,3}

In [15]: list_2 = {1,2,3,4,5}

In [16]: list_1.intersection(list_2)
Out[16]: {1, 2, 3}

In [17]: list_1.union(list_2)
Out[17]: {1, 2, 3, 4, 5}

In [18]: list_1.difference(list_2)
Out[18]: set()

In [19]: list_2.difference(list_1)
Out[19]: {4, 5}

In [20]: list_1.symmetric_difference(list_2)
Out[20]: {4, 5}

In [21]: list_1.issubset(list_2)
Out[21]: True

In [22]: list_1.issuperset(list_2)
Out[22]: False

In [23]: list_1.isdisjoint(list_2)
Out[23]: False
python---集合_第2张图片
2)实现集合的关系的第二种方式:数学符号实现
• 交集: list_1 & list_2
• 并集: list_1 | list_2
• 差集: list_1 - list_2
    list_2 - list_1
•对等差分:list_1 ^ list_2
In [29]: list_1 = {1,2,3}

In [30]: list_2 = {1,2,3,4,5}

In [31]: print list_1 & list_2
set([1, 2, 3])

In [32]: print list_1 | list_2
set([1, 2, 3, 4, 5])

In [33]: print list_1 - list_2
set([])

In [34]: print list_2 - list_1
set([4, 5])

In [35]: print list_1 ^ list_2
set([4, 5])
python---集合_第3张图片


4.集合的添加

1)s.add(1)
在集合中添加一项
2)s.update([1,3,4])
在集合中添加多项,跟的参数应该是可迭代类型
In [36]: s = {5,7}
In [37]: s.add(1)
In [38]: s
Out[38]: {1, 5, 7}
In [39]: s.update([1,3,4])
In [40]: s
Out[40]: {1, 3, 4, 5, 7}
python---集合_第4张图片


5.集合的删除

1)s.remove(1)         #删除集合中指定的元素,如果该元素不存在,则报错
In [41]: s
Out[41]: {1, 3, 4, 5, 7}

In [42]: s.remove(1)

In [43]: s.remove(2)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
in ()
----> 1 s.remove(2)

KeyError: 2
2)s.discard(1)        #删除集合中指定的元素,如果该元素不存在,则不报错
In [44]: s
Out[44]: {3, 4, 5, 7}

In [45]: s.discard(3)

In [46]: s.discard(2)

In [47]: s
Out[47]: {4, 5, 7}
python---集合_第5张图片

3)s.pop()             #随机删除集合中的某个元素,并返回删除的元素

In [48]: s
Out[48]: {4, 5, 7}

In [49]: s.pop()
Out[49]: 4
python---集合_第6张图片
4)s.clear()           #清空集合的所有元素
In [50]: s
Out[50]: {5, 7}

In [51]: s.clear()

In [52]: s
Out[52]: set()
python---集合_第7张图片


6.集合的其他操作

1)len(s)        #显示集合set的长度
In [53]: s = {1,2,3,4,5,7}

In [54]: len(s)
Out[54]: 6
python---集合_第8张图片
2)1 in s        #检测某元素是否为集合s的成员,返回布尔值
In [58]: s = {1,2,3,4,5,7}

In [59]: 1 in s
Out[59]: True

In [60]: 6 in s
Out[60]: False
python---集合_第9张图片
3)s.copy()          #集合的浅拷贝,此处不深入研究,后面会说

你可能感兴趣的:(python)