Python set详解
从形式上看,和字典类似,Python 会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:
{element1,element2,...,elementn}
其中,elementn 表示中的元素,个数没有限制。从内容上看,同一中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误。比如说:
>>> {{'a':1}}
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
{{'a':1}}
TypeError: unhashable type: 'dict'
>>> {[1,2,3]}
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
{[1,2,3]}
TypeError: unhashable type: 'list'
>>> {{1,2,3}}
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
{{1,2,3}}
TypeError: unhashable type: 'set'
并且需要注意的是,数据必须保证是的,因为对于每种数据元素,只会保留一份。例如:
>>> {1,2,1,(1,2,3),'c','c'}
{1, 2, 'c', (1, 2, 3)}
由于 Python 中的 set 是无序的,所以每次输出时元素的排序顺序可能都不相同。其实,Python 中有两种类型,一种是 set 类型的,另一种是 frozenset 类型的,它们的区别是,set 类型可以做添加、删除元素的操作,而 forzenset 类型不行。本节先介绍 set 类型,后续章节再介绍 forzenset 类型。
Python创建set
Python 提供了 2 种创建 set 的方法,分别是使用 {} 创建和使用 set() 函数将列表、元组等类型数据转换为。1) 使用 {} 创建
在 Python 中,创建 set 可以像列表、元素和字典一样,直接将赋值给变量,从而实现创建的目的,其语法格式如下:setname = {element1,element2,...,elementn}
其中,setname 表示的名称,起名时既要符 Python 名规范,也要避免与 Python 内置函数重名。举个例子:
a = {1,'c',1,(1,2,3),'c'}
print(a)
运行结果为:
{1, 'c', (1, 2, 3)}
2) set()函数创建
set() 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成。该函数的语法格式如下:
setname = set(iteration)
其中,iteration 就表示字符串、列表、元组、range 对象等数据。例如:
set1 = set("c.biancheng网站站点" rel="nofollow" />
set1: {'a', 'g', 'b', 'c', 'n', 'h', '.', 't', 'i', 'e'}
set2: {1, 2, 3, 4, 5}set3: {1, 2, 3, 4, 5}
注意,如果要创建空,只能使用 set() 函数实现。因为直接使用一对 {},Python 解释器会将其视为一个空字典。
Python访问set元素
由于中的元素是无序的,因此无法向列表那样使用下标访问元素。Python 中,访问元素最常用的方法是使用循环结构,将中的数据逐一读取出来。例如:
a = {1,'c',1,(1,2,3),'c'}
for ele in a:
print(ele,end=' ')
运行结果为:
1 c (1, 2, 3)
由于目前尚未学习循环结构,以上代码初学者只需初步了解,后续学习循环结构后自然会明白。Python删除set
和其他序列类型一样,手动函数类型,也可以使用 del() 语句,例如:
a = {1,'c',1,(1,2,3),'c'}
print(a)
del(a)
print(a)
运行结果为:
{1, 'c', (1, 2, 3)}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
print(a)NameError: name 'a' is not defined
Python set 最常用的操作是向中添加、删除元素,以及之间做交集、并集、差集等运算。受到篇幅的限制,这些知识会放到下节进行详细讲解。