P025 python基础:数据类型之集合01

"""

认识集合

set是一个无序且不重复的元素集合。

集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。

集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。

但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性:

不重复

元素为不可变对象""""""

1,声明一个集合"""s = set()s = {11,22,33,44}#注意在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典a=set('boy')#字符串b=set(['y','b','o','o'])#列表

c=set({"k1":'v1','k2':'v2'})#字典

d={'k1','k2','k2'}

e={('k1','k2','k2')}#元组

print(a,type(a))

print(b,type(b))

print(c,type(c))

print(d,type(d))

print(e,type(e))

集合的常用操作函数

"""

2,add用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。

语法:set.add(el)

"""set1 = {"ab","cd","ef"}

set1.add("ab")#已有该值,所以不做任何改变

print(set1)set1.add("gh")#插入是无序的.print(set1)

注意,add的位置是随机的,每次输出的set1的顺序都不一样。多运行几次,查看结果你就会发现这种现象。原因就在于set是无序的。

"""

3,clear清空集合元素set.clear()

"""set3 = {"ab","cd","ef"}

set3.clear()print(set3)

注意,这里是返回“set()”,不是{}。

"""

4,copy复制一个集合"""

set4 = {"ab","cd","ef"}

set5 = set4.copy()

print(set5)

注意:这里注意,输出的set5一样是无序的。集合每次输出的结果都可能不一样。所以,充分理解集合是无序这一层含义吧!

"""

5,difference用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。

语法:set1.difference(set2)

"""

set5 = {"ab","cd","ef"}

set6 = {"ab","cd","gh","jk"}

set7 = {"ab","cd","ef"}

tem1 = set5.difference(set6)print(tem1)

tem2= set6.difference(set5)

print(tem2)

tem3= set5.difference(set7)

print(tem3)

通过tem1,tem2的结果输出,不难理解:difference返回的是和被比较集合的差。即,除去共同有的,就是返回结果;返回的结果取决于谁在先。如果两个集合相等,则返回:set()。

"""

6,difference_update用于移除两个集合中都存在的元素。不返回新对象,直接修改原集合。

语法:set1.difference_update(set2)

被修改的是set1,set2不会被修改"""

set5 = {"ab","cd","ef"}

set6 = {"ab","cd","gh","jk"}

set7 ={"ab","cd","ef"}

set5.difference_update(set6)

print(set5)

print(set6)

set6.difference_update(set5)

print(set6)print(set5)

set5.difference_update(set7)

print(set5)

tips:difference 和difference_update的区别在于有没有返回新对象。

"""

7,discard 删除指定的元素。删除不存在的元素不会报错set.discard(value)

"""set7 = {"ab","cd","gh","jk"}

set7.discard("gh")

print(set7)set7.discard("go")#删除不存在的元素不报错print(set7)

"""

8,remove删除指定的元素。删除不存在的元素会报错"""

set8 = {"ab","cd","gh","jk"}

set8.remove("gh")

print(set7)

set8.remove("go")#报错print(set7)

tips:discard 和remove的区别是会不会报错。

下篇继续讲set的常用函数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容