python学习之第十二课时--基本数据类型(set)

  • 集合set

集合set,无序,是不允许重复内容的,也就是不允许重复元素,如果有重复,会自动忽略,可接收可迭代类型 (一般用于需要判断和处理交集时候用到)

集合与字典的区别是,集合没有键只有值,字典是有键的字典是一对键值对,所以创建空集合不能用{}大括号,用大括号创建空集合默认会变成字典,如果需要创建空集合用set()

创建集合

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a=set()
a={12,23,34,45,56,67,78,12}
print(a)
#打印 set([34, 67, 12, 45, 78, 23, 56])

 

转换集

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a=set()
a=(12,23,34,45,56,67,78)
b=[12,23,34,45,56,67,78]
c="12345678"
#将列表转换成集合
dd=set(b)
print(dd)         #set([34, 67, 12, 45, 78, 23, 56])
#将元组转换成集合
da=set(a)
print(da)         #set([34, 67, 12, 45, 78, 23, 56])
#字符串转换成集合
db=set(c)
print(db)         #set(['1', '3', '2', '5', '4', '7', '6', '8'])

 

集合的类库功能

 

函数

                  功能

def add(self, *args, **kwargs)

添加元素(要添加的元素)

def clear(self, *args, **kwargs)

清空元素

def difference(self, *args, **kwargs)

 

查找出一个集合里存在,另外一个集合不存在的元素

def difference_update(self, *args, **kwargs)

 

从当前集合中删除和B中相同的元素(b集合)

def discard(self, *args, **kwargs)

 

移除指定元素,不存在不报错(要移除的元素)

def intersection(self, *args, **kwargs)

 

交集,查找出a集合和b集合都存在的元素(b集合)

def intersection_update(self, *args, **kwargs)

 

交集,查找出a集合和b集合都存在的元素,并重新更新到a集合(b集合)

def isdisjoint(self, *args, **kwargs)

 

检查a集合和b集合是否有都存在的元素(b集合)

返回布尔值:如果没有都存在的,返回True,否则返回False

 

def issubset(self, *args, **kwargs)

 

判断一个集合是否是另一个集合的子序列(b集合)

 

def issuperset(self, *args, **kwargs)

 

判断一个集合是否是另一个集合的父序列(b集合)

def pop(self, *args, **kwargs)

移除元素()

def remove(self, *args, **kwargs)

移除指定元素,不存在保错(要移除的元素)

def symmetric_difference(self, *args, **kwargs)

 

对称差集,就是将两个集合里没有交集的元素重新组合成一个新的集合(b集合)

def symmetric_difference_update(self, *args, **kwargs)

 

对称差集,并更新到a中,就是将两个集合里没有交集的元素重新组合更新给a集合(b集合)

def union(self, *args, **kwargs)

并集,将两个集合合并成一个新的集合,元素有重复的会自动忽略(b集合)

def update(self, *args, **kwargs)

更新,将b集合更新到a集合,相当于合并(b集合)

 

 

具体实例如下:

 

add(self, *args, **kwargs)         添加元素(要添加的元素)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
a.add(56)
print(a)
#打印 set([56, 34, 12, 45, 23])

 

clear(self, *args, **kwargs)     清空元素()

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
a.clear()
print(a)
#打印 set([])

difference(self, *args, **kwargs)         "查找出一个集合里存在,另外一个集合不存在的元素"(格式:查找集合.difference(被判断的集合))

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
b={13,24,23,46,45}
c=a.difference(b)
print(c)
#打印 set([34, 12])

difference_update(self, *args, **kwargs)           "从当前集合中删除和B中相同的元素"(b集合)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
b={13,24,23,46,45}
a.difference_update(b)
print(a)
#打印 set([34, 12])

 discard(self, *args, **kwargs)           "移除指定元素,不存在不报错(要移除的元素)

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
a.discard(23)
print(a)
#打印 set([34, 12, 45])

 

intersection(self, *args, **kwargs)         "交集,查找出a集合和b集合都存在的元b集合)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
b={13,24,23,46,45}
c=a.intersection(b)
print(c)
#打印 set([45, 23])

intersection_update(self, *args, **kwargs)        "交集,查找出a集合和b集合都存在的元素,并重新更新到a集合(b集合)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
b={13,24,23,46,45}
a.intersection_update(b)
print(a)

isdisjoint(self, *args, **kwargs)    "检查a集合和b集合是否有都存在的元素(b集合)

返回布尔值:如果没有都存在的,返回True,否则返回False

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={12,23,34,45}
b={13,24,23,46,45}
c=a.isdisjoint(b)
print(c)
#打印False 证明有交集

issubset(self, *args, **kwargs)         "判断一个集合是否是另一个集合的子序列(b集合)

是返回True   不是返回False

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={23,34}
b={13,34,23,46,45}
c=a.issubset(b)
print(c)
#打印 True a是b的子集
d=b.issubset(a)
print(d)
#打印 False b不是a的子集

issuperset(self, *args, **kwargs)     "判断一个集合是否是另一个集合的父序列(b集合)

是返回True   不是返回False

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={23,34}
b={13,34,23,46,45}
c=a.issuperset(b)
print(c)
#打印 False a不是b的父序列
d=b.issuperset(a)
print(d)
#打印 True b是a的父序列

pop(self, *args, **kwargs)       "移除元素()

 一般默认移除第一个元素,只是集合有一套自己的元素排序规则

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={13,34,23,46,45}
b=a.pop()
print(b)
#打印 34
print(a)
#打印 set([13, 45, 46, 23])

 

remove(self, *args, **kwargs)           "移除指定元素,不存在保错(要移除的元素)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={13,34,23,46,45}
a.remove(23)
print(a)
#打印 set([34, 13, 45, 46])

 symmetric_difference(self, *args, **kwargs)       "对称差集,就是将两个集合里没有交集的元素重新组合成一个新的集合(b集合)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={13,34,23,46,45}
b={12,34,46,57}
c=a.symmetric_difference(b)
print(c)
#打印 set([12, 13, 45, 23, 57])

symmetric_difference_update(self, *args, **kwargs)   "对称差集,并更新到a中,就是将两个集合里没有交集的元素重新组合更新给a集合(b集合)

!/usr/bin/env python
# -*- coding:utf-8 -*-
a={13,37,23,46,45}
b={12,34,46,57}
a.symmetric_difference_update(b)
print(a)
#打印 set([34, 37, 12, 13, 45, 23, 57])

union(self,*args, **kwargs)"并集,将两个集合合并成一个新的集合,元素有重复的会自动忽略(b集合)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={13,37,23,46,45}
b={12,34,46,57}
c=a.union(b)
print(c)
#打印 set([34, 37, 12, 45, 46, 13, 23, 57])

update(self, *args, **kwargs)          "更新,将b集合更新到a集合,相当于合并(b集合)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
a={13,37,23,46,45}
b={12,34,46,57}
a.update(b)
print(a)
#打印 set([34, 37, 12, 13, 46, 45, 23, 57])

set

 一。set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

 要创建一个set,需要提供一个list作为输入集合:

 set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。

 二。set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性:

不重复

元素为不可变对象

 

posted @ 2017-10-28 00:55  LQ6H  阅读(289)  评论(0编辑  收藏  举报