集合

来源:互联网 发布:淘宝的好处演讲 编辑:程序博客网 时间:2024/05/13 01:49

集合的基本概念

集合(或简称集)是基本的数学概念,它是集合论的研究对象。最简单的说法,即是在最原始的集合论─朴素集合论─中的定义,集合就是“一堆东西”。集合里的“东西”,叫作元素。若然 x 是集合 A 的元素,记作 x ∈ A。

集合是现代数学中一个重要的基本概念。集合论的基本理论直到十九世纪末才被创立,现在已经是数学教育中一个普遍存在的部分,在小学时就开始学习了。这里对被数学家们称为“直观的”或“朴素的”集合论进行一个简短而基本的介绍;更详细的分析可见朴素集合论。对集合进行严格的公理推导可见公理化集合论。


集合的创建

创建集合的方法

方法1: a = { 1, “python”} 例如:

>>> a = {1,"python"}>>> aset(['python', 1])>>>>>>> type({1,"python"})<type 'set'>>>>>>>>>> b = {"google","facebook"}>>> bset(['google', 'facebook'])>>>

方法2: s = set(“Xiaoxu”) 例如:

>>> s = set("Xiaoxu")>>> sset(['a', 'i', 'o', 'u', 'x', 'X'])>>>>>> type(s)<type 'set'>>>>

注意:集合的元素没有顺序,不可重复

空的集合创建方法,例如:

>>> b = {}                #该语句表明 b 是个字典,并不是集合>>> b.add("python")Traceback (most recent call last):  File "<stdin>", line 1, in <module>AttributeError: 'dict' object has no attribute 'add'>>> b = set()             #该语句表明 b 是个集合>>> b.add("python")>>> bset(['python'])>>>

可哈希与不可哈希:

所有不可变的对象都是可哈希的,例如数字、字符串、元组。

注意:
frozenset()创建的集合是不可变的,即是可哈希的
集合中的元素必须是可哈希的

反之,所有可变的对象都是不可哈希的,例如,列表,字典,集合。

list()和set()函数

list()和set()函数可完成列表和集合的转换。代码如下:

['a', 'i', 'o', 'u', 'x', 'X']>>> a = [1,2,2,3,3,3]>>> s = set(a)     #此处转换集合>>> sset([1, 2, 3])>>>>>>>>> a = list(s)    #此处转换列表>>> a[1, 2, 3]>>>

集合:可变集合、不可变集合

set()函数创建的集合是可变集合
frozenset()函数创建的集合是不可变集合


集合的常用方法

add()的用法:

>>> help(set.add)Help on method_descriptor:add(...)    Add an element to a set.    This has no effect if the element is already present.>>>

若使用add()继续添加集合已经存在的某种元素,该方法会失效。只能添加集合中不存在的元素,例如:

>>> a = {"google","facebook"}>>> a.add("twitter")      #添加表中不存在的元素>>> aset(['twitter', 'google', 'facebook'])>>> a.add("google")       #添加表中已存在的元素,失效>>> aset(['twitter', 'google', 'facebook'])>>>

update()的用法:

>>> help(set.update)Help on method_descriptor:update(...)    Update a set with the union of itself and others.>>>

举例如下:

>>> b = {'python',(1,2,3)}>>> b.update("xiaoxu")>>> bset(['a', 'python', 'o', (1, 2, 3), 'i', 'u', 'x'])>>>

pop()的用法:

>>> help(set.pop)Help on method_descriptor:pop(...)    Remove and return an arbitrary set element.    Raises KeyError if the set is empty.>>>

pop()函数从集合中随机删除一个元素,并返回。缺点是不能删除某个指定的元素,而且pop()函数没有参数,例如:

>>> b = set(['a', 'python', 'o', (1, 2, 3), 'i', 'u', 'x'])>>> b.pop()'a'>>> b.pop()'python'>>> bset(['o', (1, 2, 3), 'i', 'u', 'x'])>>>

remove()的用法:

>>> help(set.remove)Help on method_descriptor:remove(...)    Remove an element from a set; it must be a member.    If the element is not a member, raise a KeyError.>>>

remove(values)中values是指要删除的元素,必须指定values的值,不能为空。例如:

>>> b = set(['a', 'python', 'o', (1, 2, 3), 'i', 'u', 'x'])>>> b.remove("a")>>> bset(['python', 'o', (1, 2, 3), 'i', 'u', 'x'])>>>

discard()的用法:

>>> help(set.discard)Help on method_descriptor:discard(...)    Remove an element from a set if it is a member.    If the element is not a member, do nothing.>>>

discard(values)中values是指要删除的元素,必须指定values的值,不能为空。例如:

>>> f = set(['a', 'python', 'o', (1, 2, 3), 'i', 'u', 'x'])>>> f.discard("a")>>> fset(['python', 'o', (1, 2, 3), 'i', 'u', 'x'])>>>

clear()的用法:

>>> help(set.clear)Help on method_descriptor:clear(...)    Remove all elements from this set.>>>

clear()函数能够一次性把集合中的元素全部删除,例如:

>>> g = set(['python', 'o', (1, 2, 3), 'i', 'u', 'x'])>>> g.clear()>>> gset([])>>>

集合运算

元素与集合的关系:

>>> s = set([1,2,3,4])>>> 1 in sTrue>>> 8 in sFalse>>>

集合与集合的关系:

>>> a = set([1,2,3,4,5])>>> b = set([1,2,3,4,5])>>> id(a)      #此处说明 a 和 b 是不同的对象40805000>>> id(b)40807280>>> a == b     #此处说明 a 和 b 两个集合的元素是相等的True>>>

一个集合是另一个集合的子集的判断方法:

第一种方法:

>>> a = set([1,2,3,4])>>> b = set([1,2,3,4,5])>>> a < bTrue>>>

第二种方法:

>>> a = set([1,2,3,4])>>> b = set([1,2,3,4,5])>>> a.issubset(b)True>>>

注意:若A是B的子集,则B是A的超集

一个集合是另一个集合的超集的判断方法:

第一种方法:

>>> a = set([1,2,3,4])>>> b = set([1,2,3,4,5])>>> a > bTrue>>>

第二种方法:

>>> a = set([1,2,3,4])>>> b = set([1,2,3,4,5])>>> b.issuperset(a)True>>>

并集:

第一种方法:

>>> a = set([0,1,3,6])>>> b = set([2,1,4,3])>>> a|bset([0, 1, 2, 3, 4, 6])

第二种方法

>>> a = set([0,1,3,6])>>> b = set([2,1,4,3])>>> a.union(c)set([0, 1, 2, 3, 4, 6])>>>

交集:

第一种方法:

>>> a = set([0,1,3,6])>>> b = set([2,1,4,3])>>> a &bset([1, 3])>>>

第二种方法:

>>> a = set([0,1,3,6])>>> b = set([2,1,4,3])>>> a.intersection(c)set([1, 3])>>>

集合的差(补)

第一种方法:

>>> a = set([0,1,3,6])>>> b = set([2,1,4,3])>>> a-bset([0, 6])>>>

第二种方法:

>>> a = set([0,1,3,6])>>> b = set([2,1,4,3])>>> a.difference(b)set([0, 6])>>>

集合与集合不同的部分:

>>> a = set([0,1,3,6])>>> b = set([2,1,4,3])>>> a.symmetric_difference(b)set([0, 2, 4, 6])>>>
0 0