Python数据类型:集合
2017-11-06 12:00
288 查看
数据类型:集合
集合(set)是Python2.4引入的一种新类型。集合常量与字典类似,用花括号表示,如{1,2,3}。几何中的元素是唯一的、无序的和不可改变的。集合支持数学理论中的各种集合运算。
集合常量
集合常量用为字典对象的花括号表示,也可用内置的set函数来创建。例如:>>> x={1,2,3} #直接使用集合常量 >>> x {1, 2, 3} >>> type(x) <class 'set'> >>> set({1,2,3}) #使用集合常量做常量创建对象对象 {1, 2, 3} >>> set([1,2,3]) #使用列表常量做参数创建集合对象 {1, 2, 3} >>> set('123abc') #使用字符串常量做参数创建集合常量 {'b', 'a', '2', '3', '1', 'c'} >>> set() #创建空集合 set() >>> type({}) #{}表示空字典对象,而非空集合 <class 'dict'> >>> {1,1,2,3} #创建集合对象时会自动删除重复值 {1, 2, 3} >>> set({1,2,2,3,3}) {1, 2, 3} >>>
Python3.0还引入了一种集合解析构造方法。例如
>>> {x for x in [1,2,3,4]} {1, 2, 3, 4} >>> {x for x in 'abcddd'} {'a', 'b', 'c', 'd'} >>>
上面分别使用了列表和字符串的解析方式来创建集合。还可以进一步用解析对象的表达式来创建集合元素。例如:
>>> {x**2 for x in [1,2,3,4]} #解析列表的元素用来创建集合 {16, 1, 4, 9} >>> {x*2 for x in 'abcd'} #解析字符串的元素用来创建集合 {'dd', 'bb', 'aa', 'cc'}
集合运算
集合对象支持下列运算>>> x={1,2,'a', 'bc'} >>> y={1,'a',5} >>> len(x) #求集合中元素的个数 4 >>> 'a' in x #判断元素是否属于集合 True >>> x-y #求差集 {2, 'bc'} >>> x | y #求并集 {1, 2, 5, 'a', 'bc'} >>> x & y #求交集 {1, 'a'} >>> x^y #求对称差,即:(x|y)-(x&y) {2, 5, 'bc'} >>> x<y #判断x是否是y的子集 False >>> x>{1,2} #判断x是否是{x,y}的超集 True
集合基本操作
集合中的元素是不能进行修改的,但可以为集合添加或删除元素。例如:>>> x={1,2} >>> x {1, 2} >>> y=x.copy() #复制集合对象 >>> y {1, 2} >>> x.add('abc') #为集合添加一个元素,参数为元素 >>> x,y #上述复制为对象的复制,而非引用的复制 ({1, 2, 'abc'}, {1, 2}) >>> x.update({10,20}) #为集合添加多个元素,参数为集合,若为列表或字符串,会被解析成多个元素 >>> x {1, 2, 10, 'abc', 20} >>> x.remove(10) #从集合中删除指定元素,元素不存在则报KeyError异常 >>> x {1, 2, 'abc', 20} >>> x.discard(20) #从结合中删除指定元素,元素不存在不报异常 >>> x {1, 2, 'abc'} >>> x.pop() #从集合中随机删除一个元素,并返回该元素 1 >>> x {2, 'abc'} >>> x.clear() #删除集合中的全部元素 >>> x set() >>>
集合也可用for循环执行迭代操作。例如:
>>> x={1,2,3} >>> for a in x:print(a) #用循环迭代集合中的元素 ... 1 2 3 >>>
几何元素是不可改变的,因此不能将可变对象放入集合中。集合、列表和字典对象均不能加入集合。元组可以作为一个元素加入几何。例如:
>>> x={1,2} >>> x {1, 2} >>> x.({1}) #集合不能放入集合 File "<stdin>", line 1 x.({1}) ^ SyntaxError: invalid syntax >>> x.add([1,2,3]) #列表不能放入集合 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' >>> x.add({'Mon':1}) #字典对象不能放入集合 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'dict' >>> x.add((1,2,3)) #元组可以放入集合 >>> x {1, 2, (1, 2, 3)} >>>
冻结集合
在前面的内容中,已用到的集合可以添加或删除集合元素。Python提供了一种特殊的集合--冻结集合(frozenset)。冻结集合是一个不可改变的集合,可以作为其他集合的元素。例如:
>>> x=frozenset([1,2,3]) #创建冻结集合 >>> x frozenset({1, 2, 3}) #冻结集合的打印格式与普通集合不同 >>> y=set([4,5]) >>> y {4, 5} >>> y.add(x) #将冻结集合作为元素加入另一个集合 >>> y {frozenset({1, 2, 3}), 4, 5} >>> x.add(10) #试图为冻结集合添加元素发生错误 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'frozenset' object has no attribute 'add' >>>
from: Python3基础教程
相关文章推荐
- Python基础——核心数据类型_集合
- python基础2之数据类型---集合
- Python3之数据类型集合
- python3 第十五章 - 数据类型之Sets(集合)
- Python3组合数据类型(元组、列表、集合、字典)语法
- 8-Python3从入门到实战—基础之数据类型(集合-Sets)
- python组合数据类型--集合
- 【Python】数据类型转换相关函数大集合
- python基本数据类型(四)-集合与运算符-python3笔记
- Python数据类型 -- 元组合集合
- Python数据类型之“集合(Sets)与映射(Mapping)”
- 【python】特色数据类型——字典(列表、元组、字典、集合)(7)
- Python小白学习之路(八)—【变量】【基本数据类型分类】【集合】【集合的功能】
- python 学习笔记(3)数据类型2 (元组(tuple),集合,字典)
- 兄弟连学python(4)——列表、元祖、字典、集合数据类型介绍
- Python数据类型之“集合(Sets)与映射(Mapping)”
- python3 数据类型集合
- python基本数据类型之集合set
- python实操(5):python数据类型及常用操作,数字、字符串、元组、列表、字典、集合
- Python数据类型及常用集合