初学Python时,有很多定义都比较模糊,不是特别理解,导致一到使用就卡壳。
本文致力用最简洁的语言、最清晰的例子,跟你一起理解Python中的集合函数。
一、什么是集合?
高中的时候我们就学过集合,Python中的集合与之概念类似,又有不同。
Python中的集合专门用于存储信息,存储的元素无序且不能重复,它用一对花括号{}定义,数据之间用逗号隔开。
Python中有两种不同的类型的集合:可变集合和不可变集合。
可变集合可以添加或删除元素,但可变集合存储的元素不能被哈希,因此不能用做字典的键。
不可变集合不能添加或删除元素,集合存储的元素元素可以被哈希,因此可以用做字典的键。
Python中集合之间也可以求并集、交集、差集、差分等运算。
二、集合的定义和实例
Python中用set和{}创建的集合是可变集合,用frozenset创建的是不可变集合。
不可变集合不可以增加、删除集合中的元素,即集合内容不可变。这类似于字符串和元组,如果试图改变,Python会报错。
不可变集合除了内容不能更改外,其他功能及操作和可变集合一样。
不可变集合有一个非常有用的实例,会专门写一篇文章进行介绍。接下来重点介绍可变集合。
1 语法
set(object)
其中object可以是字符串,元组,列表,字典等对象。
2 实例
实例1—(object为字符串)
set('阿黎逸阳')
得到结果:
{'逸', '阳', '阿', '黎'}
注:从实例1知,集合是无序的,把字符串拆成了一个一个的元素分别存储。
实例2—(object为元组)
set((1,1,2))
得到结果:
{1, 2}
注:从实例2知,集合中的元素不能重复,可以用集合去重。
实例3—(object为列表)
set(['好','好','学','习','天','天','向','上'])
得到结果:
{'上', '习', '向', '天', '好', '学'}
实例4—(object为字典)
set({'a':'1','b':'2','b':3})
得到结果:
{'a', 'b'}
注:从实例4知,当object是字典时,取出的是字典的键作为集合的值。
三、集合的特点
特点1 不能通过索引访问
集合是无序的,故不能通过索引访问。
特点2 可以通过for循环调用集合中的元素
a = set([1, '希望','明天','会','更好',1])
for i in a:
print(i)
得到结果:
明天
1
会
希望
更好
四、集合的更新
对于可变集合,可以用内置的add方法添加一个成员、remove方法删除一个成员、update方法添加一个或多个成员。操作符“-=”用于删除集合中的子集合。
1 用add方法添加一个集合成员
add方法可以添加一个集合成员,添加的对象可以是单个元素,也可以是单个字符串。但是不能是元组或列表等对象,即使元组或列表里的元素只有一个也会报错。
实例1—(添加单个数字)
b = {1,'c'}b.add(3)
得到结果:
{1, 3, 'c'}
实例2—(添加一个字符串)
b = {1,'c'}
b.add('aaa')
得到结果:
{1, 3, 'aaa', 'c'}
2 用remove方法删除一个集合成员
c= set([1, '希望','明天','会','更好',1])
c.remove(1)
得到结果:
{'会', '希望', '明天', '更好'}
3 用update方法添加一个或多个集合成员
实例1—(添加一个成员)
c= set([1, '希望','明天','会','更好',1])
c.update('a')
得到结果:
{1, 'a', '会', '希望', '明天', '更好'}
实例2—(添加多个成员)
b = {1, 3, 5, 'aaa', 'c'}
c = {'会', '希望', '明天', '更好'}
b.update(c)
得到结果:
{1, 3, 5, 'aaa', 'c', '会', '希望', '明天', '更好'}
4 用“-=”方法删除集合中的子集合
b = {1, 3, 5, 'aaa', 'c', '会', '希望', '明天', '更好'}
c = {'会', '希望', '明天', '更好'}b -= c #等价于b = b - c
得到结果:
{1, 3, 5, 'aaa', 'c'}
五、集合的运算
Python中集合之间也可以求并集、交集、差集、差分等运算。
1 两个集合求并集
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set3 = set1 | set2 #两个集合中的元素合并去重
得到结果:
{'你', '健康', '安康', '希望', '幸福', '开心', '快乐', '我'}
2 两个集合求交集
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set4 = set1 & set2 #两个集合中都有的元素
得到结果:
{'你', '希望', '快乐', '我'}
3 两个集合求差集
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set5 = set1 - set2 #set1中的元素去除set2中有的元素
得到结果:
{'安康', '幸福'}
4 两个集合求差分
集合的差分运算又叫对称差运算,是集合的异或运算。使用符号‘^’或函数symmetric_difference可以执行集合的差分运算。
在Python语言中,由不同时属于集合set1和set2的成员组成新的集合,叫集合的差分运算。
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set6 = set1^set2
得到结果:
{'健康', '安康', '幸福', '开心'}
六、总结