目录
1. 集合的定义
在数学中集合的定义:具有相同性质对象的集合体,成为一个集合。元素可以是数值,文字,坐标等等对象
在Python中集合的定义类似,是一个含有不重复元素的无序的组合。
2. 集合的创建及性质使用
2.1 空集合
可以使用大括号{}
或者set()
来创建空集合
>>> a={
}
>>> a
{
}
>>> b=set()
>>> b
set()
2.2 集合创建
2.2.1 对list和tuple创建
可以对list和tuple使用set()
创建集合:set(list)
和 set(tuple)
.
>>> set1=set([1,4,5,'a','b'])
>>> set1
{
1, 4, 5, 'b', 'a'}
>>> set2=set((-3,4,'b','c'))
>>> set2
{
'c', 4, -3, 'b'}
2.2.2 set(only_one_obj)
问题
当使用set()
创建集合,而且括号里只有一个字符串对象时,对象加括号和不加括号创建的集合是一样的,是把字符串分割为单个字符组成的集合。
>>> set(('Python'))
{
'y', 'o', 't', 'h', 'n', 'P'}
>>> set('Python')
{
'y', 'o', 't', 'h', 'n', 'P'}
如果想创建只有一个元素‘Python’的集合,则可以这样:set((obj,))
或者set([obj])
>>> set(('Python',)) #这个只有一个元素的元组创建一样
{
'Python'}
>>> set(['Python']) #用列表的形式则不会出现上面情况
{
'Python'}
>>> set({
'Python'}) #可以直接加大括号
{
'Python'}
2.3 集合性质:无序和去重
集合本身是无序的,顺序不一样,但是集合不变,还是相等的。
集合的另一个重要的性质是:互异性,也就是说元素是不重复的。那么我们可以利用这个性质把list或者tuple中重复的元素删除(去重)。
>>> set([1,2,2,2,2,3,3,3,4])
{
1, 2, 3, 4}
>>> set(('Max','Max','Kiki','Kiki'))
{
'Max', 'Kiki'}
2.4 集合中不能加入可变类型数据
集合不存在可变类型的数据元素。
>>> set([1,2,['a','b'],5]) #list是可变数据类型
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
set([1,2,['a','b'],5])
TypeError: unhashable type: 'list'
但是元组tuple是不可变类型。
>>> set((1,2,(3,4),5)) #(3,4)是不可变类型,可以把他看作坐标。
{
1, 2, (3, 4), 5}
3. 集合子集和超集
如果一个集合中的所有的元素为另一个集合中的元素,那么前一个集合就是后一个集合的子集,后一个集合就是前一个集合的超集。
真子集指子集的元素不是超集的全部元素,真超集指超集的元素多余子集的元素。
我们经常需要判断两个集合