目录
前几节我们已经介绍了Python 中的 列表list , 元组tuple 和 字典dict ,本节来介绍Python 中的最后一种数据结构—— 集合set .
Python 中的 set 与 dict 很像,唯一的不同是, dict 中保存的是 键值对 ,而 set 中只保存 键 ,没有 值 .
Python 集合 有如下特点:
Python 集合的声明有两种方式:
创建 空集合 时,只能用 set() ,而不能用 {} :
创建 非空集合 时,可以用 set() ,也可以用 {} :
由于集合中的元素是唯一的,如果初始化时的 可迭代 数据中有重复的元素,则会自动删去重复的元素:
使用 len() 函数可以查看集合中元素的个数:
由于Python 集合中的元素的是无序的,所以可不能使用 下标 的方式来访问集合中的单个元素.
我们可以使用 for 循环 来遍历集合中的所有元素:
我们可以对两个集合进行如下运算:
交集与并集
in 运算
使用 dir(set) 查看集合支持的所有方法:
① add 方法
由于集合中的元素是唯一的,向集合中添加元素时有两种情况:
示例:
①.0. difference_update 方法
①.1. intersection 方法
(完.)
推荐阅读:
Python 简明教程 ---10,Python 列表
Python 简明教程 ---11,Python 元组
python中set()函数的用法如下:
①.、首先按下"Win+R"组合键,打开运行窗口,如下图所示.
变量名={元素,元素,,,}
print(nums)
? ? ?print(nums)
? ?nums.pop()
? ?print(nums)
交集:(存在相同元素)
set1={"anfly","tom","haha"}
并集:(得到全部集合中全部的元素)
print(new_set)
运算符 (+ * in)
内置函数 (len max min del)
? ? ? print(min(set1))
def函数名():
? ? ?执行语句
函数名()
列:
defhello():
print("hello word")
hello()
? a=11
? c=a+b
print(c)
def? fun(a,b):
? ?print("a:",a)
? ?print("b:",b)
? ? print("a:",a)
? ? print("name:",name)
? ? print("age:",age)
printinfo(name="anfly")? [展示都能展示出来]
①.).*args[展示是元组]
defprintinfo(*args):
? ?print("args:",args)
def printinfo(**kwargs):
? ?print("kwargs:",kwargs)
? ? ? ?print("a:",a)? ? ? ? ==10
def fan(a,b):
? ? return a+b
案例一:
sum=lambda a,b:a+b
案例二:
sum=lambda a,b:100
①局部变量
def jv():
? ? ?print(a)
def jv1():? ?
? ? ?print(a)?
? ? ? print(a)
jv()? ? ?#全局变量
? ? ? global b? ?
? ? ? ?b="我也是全局变量"?
? ? ? ? print(a)
? ? ? ? ? print(a)? ?
? ? ? ? ? ?print(b)
Python set 集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算.
向set集合中添加元素
set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为:
setname.add(element)
其中,setname 表示要添加元素的集合,element 表示要添加的元素内容.
需要注意的是,使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能添加列表、字典、集合这类可变的数据,否则 Python 解释器会报 TypeError 错误.例如:
print(a)
运行结果为:
Traceback (most recent call last):
TypeError: unhashable type: 'list'
从set集合中删除元素
删除现有 set 集合中的指定元素,可以使用 remove() 方法,该方法的语法格式如下:
setname.remove(element)
使用此方法删除集合中元素,需要注意的是,如果被删除元素本就不包含在集合中,则此方法会抛出 KeyError 错误,例如:
a.remove(1)
KeyError: 1
和列表类似,集合也是一个数据集合,其也不要求元素的类型一致.但是集合有下面两个特点:
集合是无序的,添加元素时不能指定位置,删除元素时也不能通过指定位置,只能通过指定值.当然也不能通过位置来定位某个元素.
①.、创建集合
我们可以从列表创建集合,将列表中的元素都加入到集合中,如果有重复的元素就仅保留一个.
也可以从元组、字典和其他集合构建集合.比如:
使用的是字典的键来构建集合,字典的值没有被使用到,比如:
从字符串构建集合,其每个字符都成为集合的一个元素,比如:
a = set("abcdefabc")?
输出结果:a={'c', 'e', 'f', 'b', 'd', 'a'}
另外一个集合构建集合,比如:
当然也可以构造一个空的集合,使用的方法是set().空集合没有任何元素,比如:
a = set()
①添加元——add(值)
该函数只能添加一个元素.
如果添加的元素已经在集合中存在,那么不会发生任何变化.
该函数删除集合中指定的值对应的元素.
如果指定值在集合中不存在,则不做任何操作.
该函数和discard()的不同之处在于,如果指定的值在集合中不存在,会抛出异常.
该函数扔掉所有的元素.执行完该函数后,该集合将变成一个空的集合.
a.clear()
如果集合中有元素,则返回值为删除掉的元素的值.
如果集合为空,则抛出异常.
该函数返回一个新的集合,该集合包含所有属于a而不属于b的元素,如图所示.该操作不会改变原始集合a或者b的内容.
该操作符和difference()类似,返回一个新的集合,该集合包含所有属于a而不属于b的元素.该操作不会改变原始输入集合a或者b的内容.
该函数和difference()的不同是操作数a会被修改,而且没有返回值.
该函数返回所有的同时属于集合a和集合b的元素组成的集合,即返回的是一个集合,该集合的所有元素都同时属于集合a和b,如图所示.输入集合a和b在该过程中没有发生任何改变.
①.0.交集操作符()
该操作符和intersection()的效果是一样的.
①.1.删除集合a中所有不属于集合b的元素——intersection_update(集合)
该函数也是求交集,与intersection()不同的是其修改原始输入集合,并且没有返回值.这也是为何该接口函数后面带有update字样,因为其更新了原来的输入集合.
该函数判断是否存在这样的元素,其同时属于集合a和集合b.如果存在这样的元素,返回False;否则返回True.
该函数返回一个新的集合,该集合的元素要么属于输入集合a要么属于集合b.该操作不修改作为输入的两个集合a和b.如图表示该函数返回的集合的内容.
该操作符和union()的效果是一样的.其返回一个并集,并且不修改输入集合的内容.
该函数在集合a中添加属于b而不属于a的所有元素.该操作和union()不同的是,其修改了输入集合a,并且没有返回值.
外集就是由只属于集合a或者只属于集合b的元素组成的集合,如图所示.该操作返回一个新的集合,并且不修改原来的输入集合a和b.
该操作符和symmetric_difference()的效果是一样的,也是返回一个新的集合,并且不会修改输入的集合a或者b.
该函数和symmetric_difference()的区别是,其修改了集合a的值,并且没有返回值.
a是b的子集就是说集合a的所有元素都属于集合b.
如果a等于b,那么a和b互为子集.
a是b的超集合就是说集合b中的所有元素都属于集合a.
如果a是b的超集,那么b就是a的子集.
如果a等于b,那么它们互为子集,同时也互为超集.
第一段:创建集合
创建非空集合:集合中set括号中需要的参数的数据类型有:序列(包括字符串、列表、元组),字典可以转为集合,注意数值类型不能作为集合的参数,如int类型.
第二段:添加元素
add() 方法是将要添加的元素作为一个整体添加到集合中
update() 方法是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的
第三段:删除元素
集合的删除操作使用的方法跟列表是一样的,使用的也是 remove 方法,只能单个删除
第四段:遍历集合
第五段:集合与字符串、列表、元组互转,集合转字典
第六段:查找元素并删除
函数原型: a.discard(b)
参数说明:a为一个set类型的变量;b表示要查找并删除的元素
函数作用:在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做.该函数没有返回值
第七段:pop用法
函数原型: set1.pop() ? ? 删除并返回集合set1中的第一个元素,如果为空引发KeyError错误+
第八段:clear、copy和len的用法
clear ?方法用于清空集合中的所有元素
copy ?方法用于集合拷贝
len ?跟求序列的长度的函数len()是一样的,返回的是集合中有多少个元素
第九段:求集合的交集、并集、差集和difference的用法
求集合的 交集 使用的符号是 ""
求集合的 并集 用的是符号 "|"
求集合的 差集 使用的符号是减号 "-"
十、运算符判断集合间关系和issuperset、issubset的用法
集合可以使用大于()、小于()、大于等于(=)、小于等于(=)、等于(==)、不等于(!=)来判断某个集合是否完全包含于另一个集合,也可以使用子父集判断函数.
十第一段:不可变集合frozenset的用法
frozenset ? ?该集合中的内容是不可改变的,其他功能及操作跟可变集合set一样
以上就是土嘎嘎小编为大家整理的python集合函数教学相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!