Python学习10.14:Python set集合详解

Python 中的集合,和数学中的集合概念同样,用来保存不重复的元素,即集合中的元素都是惟一的,互不相同。
从形式上看,和字典相似,Python 集合会将全部元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,以下所示:python

{element1,element2,...,elementn}

其中,elementn 表示集合中的元素,个数没有限制。

从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,没法存储列表、字典、集合这些可变的数据类型,不然 Python 解释器会抛出 TypeError 错误。好比说:shell

>>> {{'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 类型集合。spa

Python建立set集合

Python 提供了 2 种建立 set 集合的方法,分别是使用 {} 建立和使用 set() 函数将列表、元组等类型数据转换为集合。.net

1) 使用 {} 建立

在 Python 中,建立 set 集合能够像列表、元素和字典同样,直接将集合赋值给变量,从而实现建立集合的目的,其语法格式以下:code

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 对象等可迭代对象转换成集合。该函数的语法格式以下:element

setname = set(iteration)

其中,iteration 就表示字符串、列表、元组、range 对象等数据。

例如:

set1 = set("c.biancheng.net")
set2 = set([1,2,3,4,5])
set3 = set((1,2,3,4,5))
print("set1:",set1)
print("set2:",set2)
print("set3:",set3)

运行结果为:

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=' ')

运行结果为:

# set集合自动将重复的项删除
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 集合最经常使用的操做是向集合中添加、删除元素,以及集合之间作交集、并集、差集等运算。受到篇幅的限制,这些知识会放到下节进行详细讲解。

相关文章
相关标签/搜索