集合

本文介绍了集合的概念及创建方法,包括使用不同语法创建集合、空集合的创建、可哈希与不可哈希的区别。此外还详细解释了集合的各种操作方法如添加、更新、删除等,以及集合之间的运算如并集、交集、差集等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合的基本概念

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

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


集合的创建

创建集合的方法

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

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

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

>>> s = set("Xiaoxu")
>>> s
set(['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")
>>> b
set(['python'])
>>>

可哈希与不可哈希:

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

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

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

list()和set()函数

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

['a', 'i', 'o', 'u', 'x', 'X']
>>> a = [1,2,2,3,3,3]
>>> s = set(a)     #此处转换集合
>>> s
set([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")      #添加表中不存在的元素
>>> a
set(['twitter', 'google', 'facebook'])
>>> a.add("google")       #添加表中已存在的元素,失效
>>> a
set(['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")
>>> b
set(['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'
>>> b
set(['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")
>>> b
set(['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")
>>> f
set(['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()
>>> g
set([])
>>>

集合运算

元素与集合的关系:

>>> s = set([1,2,3,4])
>>> 1 in s
True
>>> 8 in s
False
>>>

集合与集合的关系:

>>> 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 < b
True
>>>

第二种方法:

>>> 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 > b
True
>>>

第二种方法:

>>> 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|b
set([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 &b
set([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-b
set([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])
>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值