#Python集合学习笔记
一、基本知识:
1、集合(set):是一个 无序的、不重复的 元素序列。
2、集合的创建:使用 { } 或者 set( )函数 创建集合。
(1)创建 空集合:必须使用 set( )函数。
(2)创建 空集合,不能使用 { },{ } 是用来创建 空字典的。
3、集合创建实例:
(1)a={v1,v2,v3,...}
(2)b=set(value)
(3)推导式:a={x for x in 'abcdefgabcgfc' if x not in ‘abc’}
4、集合的运算:集合a,集合b
(1)【差集】a - b :返回包含在集合a 中的元素,但在集合b 中没有此元素。
(101)差集的函数表示1:difference() 方法:用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。
例:集合a,集合b,集合z:z=a.difference( b )
(102)差集的函数表示2:difference_update()方法:用于移除两个集合中都存在的元素。
例:集合a,集合b:a.difference_update( b )
(103)difference()与defference_update()的区别: difference()
方法返回一个移除相同元素的新集合; difference_update()
方法是直接在原来的集合中移除元素,没有返回值。
(2)【并集】a | b :返回包含在集合a 和集合b 中的所有元素。
(201)并集的函数表示:union()方法:返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。
union()方法语法:s1.union(s2 [,s3,...])
例:集合a,集合b,集合z:z=a.union( b ) #合并两个集合,重复元素只会出现一次,返回一个新集合。
(3)【交集】a & b:返回既在集合a 中,又在集合b中的元素。
(301)交集的函数表示1:intersection()方法:用于返回两个或更多集合中都包含的元素,即交集。
intersection()方法语法:s1.intersection(s2 [,s3,...])
例:集合a,集合b,集合z:z=a.intersection( b ) #返回一个新集合
(302)交集的函数表示2:intersection_update()方法:用于获取两个或更多集合中都重叠的元素,即计算交集。
intersection_update()方法语法:s1.intersection_update(s2 [,s3,...])
例:集合a,集合b:a.intersection_update( b ) #移除a 集合中不存在于b 集合中的元素。
(303)intersection()与intersection_update()的区别: intersection()
方法是返回一个新的集合;intersection_update()
方法是在原始的集合上移除不重叠的元素。
(4)【补集】a ^ b:返回不同时在集合a,和集合b 中的元素。(在集合a中,但集合b中没有,和在集合b中,但在集合a中没有的元素)
(401)补集的函数表示法1:symmetric_difference():返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。
symmetric_difference()方法语法:s1.symmetric_difference(s2)
例:集合a,集合b,集合z:z=a.symmetric_difference( b ) #返回两个集合组成的新集合,但会移除两个集合的重复元素。
(402)补集的函数表示法2:symmetric_difference_update():移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
symmetric_difference_update()方法语法:s1.symmetric_difference_update( s2 )
例:集合a,集合b:a.symmetric_difference_update( b ) #在原始集合a 中移除与 b 集合中的重复元素,并将集合b 中不重复的元素插入到集合a 中。
(5)判断两个集合元素包含情况:
(501)issuperset()函数方法:用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。
issuperset()方法语法:s1.issuperset( s2 )
例:集合a,集合b:z=a.issuperset( b ) #判断集合b 的所有元素是否都包含在集合a 中 。
(502)issubset()函数方法:用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。
issubset()方法语法:s1.issubset( s2 )
例:集合a,集合b:z=a.issubset( b ) #判断集合 a 的所有元素是否都包含在集合 b 中。
(503)issuperset()与issubset()的区别:其实使用一个就行,谁在谁中,只要哪个集合放在前,哪个集合放在后即可。
(6)判断两个集合中是否有相同的元素:方法函数:isdisjoint() #返回布尔值,如果不包含返回 True,否则返回 False。
例:集合a,集合b:z=a.isdisjoint( b ) #判断集合 b 中是否有元素在 集合 a 中。
(7)集合的拷贝:s.copy():
例:集合a,集合b:b=a.copy( )
5、集合的基本操作:集合s
(1)添加 元素1:s.add( x ):如果 x 已经在集合s 中,则不做任何操作。
(2)添加 元素2:s.update( x ):参数可以是数组、列表、字典等;多个 x ,之间用逗号 (,)分隔。
(3)移除 元素1:s.remove( x ):将元素 x 从集合s 中移除;如果 x 不存在,则会发生错误。
(4)移除 元素2:s.discard(x):将元素 x 从集合s 中移除;如果 x 不存在,则不会发生错误。
(5)删除 元素3:x = s.pop( ):随机删除元素,但会返回删除的元素。s.pop()删除元素原理:集合s 的pop() 函数会对集合s 的元素进行无序的排序,然后对无序排序后的集合最左边的元素删除。
(6)集合元素个数:len( s ):返回集合s 的元素个数。
(7)清空集合:s.clear():清空集合s。
(8)判断元素x 是否在集合s 中:x in s:存在:返回True;不存在:返回False。