python--set(集合)

一、创建集合

创建非空集合:集合中set括号中需要的参数的数据类型有:序列(包括字符串、列表、元组),字典可以转为集合,注意数值类型不能作为集合的参数,如int类型。

代码示例:

set1 = set("3213")    --{'2', '3', '1'} 

二、添加元素

add()方法是将要添加的元素作为一个整体添加到集合中

update()方法是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的

代码示例:

#创建一个集合

s=set("123456")    --{'4', '5', '3', '6', '2', '1'}

#添加元素

s.add("123")    --{'4', '5', '3', '6', '2', '123', '1'}

s.update("5678")    --{'4', '5', '8', '3', '6', '2', '123', '1', '7'}

三、删除元素

集合的删除操作使用的方法跟列表是一样的,使用的也是remove方法,只能单个删除

代码示例:

#创建一个集合

s=set("123456")    --{'4', '5', '3', '6', '2', '1'}

#删除元素

s.remove("1")    --{'4', '5', '3', '6', '2'}

四、遍历集合

代码示例:

#创建一个集合

s=set("123456")    --{'4', '5', '3', '6', '2', '1'}

#遍历集合

for i in s:

    print(i,end=" ")    --453621

#带索引序号的遍历:

for i,ii in enumerate(s) :    --枚举的方法

    print(i,ii," ",end="")    --0 4   1 5   2 3   3 6   4 2   5 1

五、集合与字符串、列表、元组互转,集合转字典

代码示例:

#字符串与集合互转

a = "badc"

b = set(a)    --{'a', 'c', 'b', 'd'}    --字符串转集合,顺序打乱并去重

s1 = "".join(b)    --'acbd'    --集合转字符串,顺序不变

#列表与集合互转

list1 =  [1, 2, 3, 2, 'a', 'b']

list2 = set(list1)    --{1, 2, 3, 'a', 'b'}    --列表转集合,排序并去重

list2 = list(list1)    --[1, 2, 3, 2, 'a', 'b']    --集合转列表,顺序不变

#元组与集合互转

tup = (1,3,2,1,"b","a")

tup1 = set(tup)    --{1, 2, 3, 'b', 'a'}    --元组转集合,排序并去重

tup2 = tuple(tup1)    --(1, 2, 3, 'b', 'a')    --集合转元组,顺序不变

#字典转集合

dict1 = {3:4,1:2}

dict = set(dict1)    --{1, 3}    --排序并去重,只取字典的key组成集合

六、查找元素并删除

函数原型:a.discard(b)

参数说明:a为一个set类型的变量;b表示要查找并删除的元素

函数作用:在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做。该函数没有返回值

代码示例:

set1 = set("123456")

set1.discard("1")    --{'6', '3', '5', '2', '4'}

七、pop用法

函数原型:set1.pop()    删除并返回集合set1中的第一个元素,如果为空引发KeyError错误+

代码示例:

set1 = set("123456")    --{'6', '3', '5', '1', '2', '4'}

a = set1.pop()    --{'3', '5', '1', '2', '4'}    a = "6"

八、clear、copy和len的用法

clear    方法用于清空集合中的所有元素

copy    方法用于集合拷贝

len    跟求序列的长度的函数len()是一样的,返回的是集合中有多少个元素

代码示例:

set1 = set("123456")    --{'6', '3', '5', '1', '2', '4'}

#清空集合

set1.clear()    --set()

#拷贝set1到set2

set2 = set1.copy()    --拷贝后两个集合的内存地址不一致

#求集合长度

len(set1)    --6

九、求集合的交集、并集、差集和difference的用法

求集合的交集使用的符号是“&”

求集合的并集用的是符号“|”

求集合的差集使用的符号是减号“-”

difference    等价于集合的差集,查看两个集合的不同之处。这种不同指的是集合s1相对于集合s2,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素组成的新集合

代码示例:

set1 = set("1234")

set2 = set("2345")

#求交集

set1 & set2    --{'3', '2', '4'}

#求并集

set1 | set2    --{'3', '5', '1', '2', '4'}

#求差集

set1 - set2    --{'1'}

set1.difference(set2)      --{'1'}

set2 - set1    --{'5'}

set2.difference(set1)    --{'5'}

十、运算符判断集合间关系和issuperset、issubset的用法

集合可以使用大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)来判断某个集合是否完全包含于另一个集合,也可以使用子父集判断函数。

issuperset    集合st1是否是集合st2的父集

issubset    集合st1是否是集合st2的子集

代码示例:

set1 = set("123456")

set2 = set("345")

#求集合set1是否是set2的父集

set1 >= set2    --true

set1.issuperset(set2)    --true

#求集合set1是否是set2的子集

set1 < set2    --false

set1.issubset(set2)    --false

十一、不可变集合frozenset的用法

frozenset    该集合中的内容是不可改变的,其他功能及操作跟可变集合set一样

代码示例:

set1 = frozenset('123456')    --frozenset({'6', '3', '5', '1', '2', '4'})

你可能感兴趣的:(python--set(集合))