首页 > 数据库 > 数据库开发技术 > Python中的集合
初学Python时,有很多定义都比较模糊,不是特别理解,导致一到使用就卡壳。
什么是集合
集合的定义和实例
2.1 语法
2.2 实例
集合的特点
3.1 不能通过索引访问
3.2 可以通过for循环调用集合中的元素
集合的更新
4.1 用add方法添加一个集合成员
4.2 用remove方法删除一个集合成员
4.3 用update方法添加一个或多个集合成员
4.4 用“-=”方法删除集合中的子集合
集合的运算
5.1 两个集合求并集
5.2 两个集合求交集
5.3 两个集合求差集
5.4 两个集合求差分
总结

高中的时候我们就学过集合,Python中的集合与之概念类似,又有不同。
Python中的集合专门用于存储信息,存储的元素无序且不能重复,它用一对花括号{}定义,数据之间用逗号隔开。
可变集合可以添加或删除元素,但可变集合存储的元素不能被哈希,因此不能用做字典的键。
不可变集合不能添加或删除元素,集合存储的元素元素可以被哈希,因此可以用做字典的键。

Python中用set和{}创建的集合是可变集合,用frozenset创建的是不可变集合。
不可变集合不可以增加、删除集合中的元素,即集合内容不可变。这类似于字符串和元组,如果试图改变,Python会报错。
1 语法
set(object)
set('阿黎逸阳')
{'逸', '阳', '阿', '黎'}注:从实例1知,集合是无序的,把字符串拆成了一个一个的元素分别存储。
set((1,1,2))得到结果:
{1, 2}
注:从实例2知,集合中的元素不能重复,可以用集合去重。
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会希望更好

1 用add方法添加一个集合成员
add方法可以添加一个集合成员,添加的对象可以是单个元素,也可以是单个字符串。但是不能是元组或列表等对象,即使元组或列表里的元素只有一个也会报错。
b = {1,'c'}b.add(3){1, 3, 'c'}
实例2—(添加一个字符串)
b = {1,'c'}b.add('aaa')
{1, 3, 'aaa', 'c'}
c= set([1, '希望','明天','会','更好',1])c.remove(1)
{'会', '希望', '明天', '更好'}
实例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中集合之间也可以求并集、交集、差集、差分等运算。
set1 = {'我','希望','你','幸福','快乐','安康'}set2 = {'我','希望','你','开心','快乐','健康'}set3 = set1 | set2 #两个集合中的元素合并去重
{'你', '健康', '安康', '希望', '幸福', '开心', '快乐', '我'}
set1 = {'我','希望','你','幸福','快乐','安康'}set2 = {'我','希望','你','开心','快乐','健康'}set4 = set1 & set2 #两个集合中都有的元素
{'你', '希望', '快乐', '我'}
set1 = {'我','希望','你','幸福','快乐','安康'}set2 = {'我','希望','你','开心','快乐','健康'}set5 = set1 - set2 #set1中的元素去除set2中有的元素
{'安康', '幸福'}集合的差分运算又叫对称差运算,是集合的异或运算。使用符号‘^’或函数symmetric_difference可以执行集合的差分运算。
set1 = {'我','希望','你','幸福','快乐','安康'}set2 = {'我','希望','你','开心','快乐','健康'}set6 = set1^set2
得到结果:
{'健康', '安康', '幸福', '开心'}六、总结

1.Python中集合存储的元素无序且不能重复。
2.Python中集合分为可变集合(用set和{}创建)和不可变集合(用frozenset创建)。可变集合可以添加或删除元素,不可变集合不能被修改。
3.Python中集合不能通过索引访问,可以通过for循环调用集合中的元素。
4.Python中集合可以通过add(添加一个集合成员)、remove(删除一个集合成员)、update(添加一个或多个集合成员)等方法对集合进行更新。
5.Python中集合可以求并集、交集、差集、差分等运算。
-end-
往期回顾:

原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。