##################################################
##################### 集合 ########################
##################################################
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)
<ipython-input-11-9b6dfb40f232> in <module>()
----> 1 set = {1,2,3,'hello',(1,2,3),[1,2,3]}
TypeError: unhashable type: 'list'
• 交集: 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
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])
在集合中添加一项
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}
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)
<ipython-input-43-542ac1b736c7> in <module>()
----> 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}
Out[48]: {4, 5, 7}
In [49]: s.pop()
Out[49]: 4
4)s.clear() #清空集合的所有元素
In [50]: s
Out[50]: {5, 7}
In [51]: s.clear()
In [52]: s
Out[52]: set()
In [53]: s = {1,2,3,4,5,7}
In [54]: len(s)
Out[54]: 6
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
3)s.copy() #集合的浅拷贝,此处不深入研究,后面会说
##################### 集合 ########################
##################################################
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)
<ipython-input-11-9b6dfb40f232> in <module>()
----> 1 set = {1,2,3,'hello',(1,2,3),[1,2,3]}
TypeError: unhashable type: 'list'
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
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])
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}
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)
<ipython-input-43-542ac1b736c7> in <module>()
----> 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}
3)s.pop() #随机删除集合中的某个元素,并返回删除的元素
In [48]: sOut[48]: {4, 5, 7}
In [49]: s.pop()
Out[49]: 4
4)s.clear() #清空集合的所有元素
In [50]: s
Out[50]: {5, 7}
In [51]: s.clear()
In [52]: s
Out[52]: set()
6.集合的其他操作
1)len(s) #显示集合set的长度In [53]: s = {1,2,3,4,5,7}
In [54]: len(s)
Out[54]: 6
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
3)s.copy() #集合的浅拷贝,此处不深入研究,后面会说