前言
`
由于前面一篇文章对于集合的描述过少,所以单独写这篇文章来讲述Pthon机器学习中的基础内容,集合的操作
提示:以下是本篇文章正文内容,下面案例可供参考
一、集合的定义?
集合是一种无序的可变容器类型,元素不可重复
集合的表示和字典很像都是使用大括号表示 { } ,但是字典是包括键值对 元素, 而集合是包括 值元素,并不包含键值对
二、使用步骤
1.集合的创建
一般我们创建集合有两种创建方式,一种是通过之间赋值,一种是通过set()进行类型转换
1、使用 { } 创建 集合 ,如果要创建集合,{ } 就必须包含元素
{ 元素1,元素2,元素3,元素4,… }
2、使用 set()方法进行创建集合
set(迭代对象)
#创建集合
#使用 { } 创建
fruits = { 'apple','orange','banana','apple' } #去重
print(fruits) #{'apple', 'orange', 'banana'}
#使用 set()转换其他类型为集合类型
set_num = set( [1,2,3,4,4,3,2,1] )
print(set_num)
set_num = set() #使用 set() 创建空集合
print(set_num)
当我们创建一个空字典后,打印的是set(),而不是{},因为在python语言中,{}表示字典,所以创建一个空集合打印的是set();
set_num = set() #使用 set() 创建空集合
print(set_num)
print(type(set_num))
set_num={}#创建一个空字典,{}并不是表示集合
print(set_num)
print(type(set_num))
输出
set()
<class 'set'>#类型为集合
{}
<class 'dict'>#类型为字典
可以清楚看到,我们的结论正确,这是很多人容易混淆的知识点,希望大家能够看到即识别字典和集合
2.集合的相关操作
1、集合添加元素,如果添加的元素在集合中有(重复),就不会添加
set.add(元素值)
在集合中添加容器数据: 元组、列表、集合
set.update(容器数据)
代码如下(示例):
#添加元素
set_num.add(5)
set_num.add("ok")
print(set_num)
set_num.update( {"你好",1,2,3,4,5 } )
set_num.update( ["你好",1,2,3,4,5 ] )
set_num.update( ("你好",1,2,3,4,5 ) )
对于字典很特殊,因为他的形式和集合很像当我们在
相对应的,我们有对应的将字典添加进集合之中。
首先我们创建一个字典
dict_str = {'name':'zhangsan','age':20,'sex':'男'}
然后使用相应的函数对字典添加进集合之中
set_num=set()#创建一个空集合,用于添加字典中的值,键,或者键值对
dict_str = {'name':'zhangsan','age':20,'sex':'男'}#创建一个字典
set_num.update(dict_str) #添加的是字典中的键
set_num.update(dict_str.values())
print( dict_str.keys() ) #获取字典中的所有 键
print( dict_str.values() ) #获取字典中的所以 值
print( dict_str.items() )#获取字典中的 键值 键值会组成一个元组
print(set_num)
上面这个代码中,我们可以利用三个函数分别获取字典中的键,字典中的值,字典中的键值对,然后将这些字典中的键,字典中的值,字典中的键值对,添加进集合中。
输出如下
dict_keys(['name', 'age', 'sex'])
dict_values(['zhangsan', 20, '男'])
dict_items([('name', 'zhangsan'), ('age', 20), ('sex', '男')])
{'男', 'age', 20, 'zhangsan', 'name', 'sex'}
通过调用不同函数,我们实现了添加字典对应的值,这和添加列表和元组有一定区别。
下面是集合中的删除操作
set_num={'男', 'age', 20, 'zhangsan', 'name', 'sex'}
set_num.pop()#随机删除一个
set_num.remove(元素值) #从集合中删除指定 元素值 ,如果元素值不存在 报错
set_num.discard(元素值) #从集合中删除指定 元素值 ,如果元素值不存在 不会有任何事件产生
print(set_num)
在集合的操作中,我们还能将集合进行清空操作
set_num={'男', 'age', 20, 'zhangsan', 'name', 'sex'}
#set_num.pop()
set_num.remove(20)
print(set_num)
set_num.clear()#清空集合
print(set_num)
输出
{'男', 'age', 'zhangsan'}
set()
3.标题集合中的交集,并标题集,差集运算
集合的运算:交集、并集、差集
交集:获取两个集合中同时都存在的数据
'''
set1 & set2 用关系符
set1.intersection(set2)用函数
'''
set_1={1,3,5,7,9}
set_2={1,5,6,4,8}
temp=set_1 & set_2
temp1=set_1.intersection(set_2)
print(temp)
print(temp1)
输出
{1, 5}
{1, 5}
并集:把两个集合里面的数据合并起来
'''
set1 | set2 用关系符
set1.union(set2)用函数
'''
set_1={1,3,5,7,9}
set_2={1,5,6,4,8}
temp=set_1 | set_2
temp1=set_1.union(set_2)
print(temp)
print(temp1)
输出
{1, 3, 4, 5, 6, 7, 8, 9}
{1, 3, 4, 5, 6, 7, 8, 9}
差集:在前一个集合中有,在后一个集合中没有的数据
"""
set1 - set2 用运算符-(减号)
set1.difference(set2)用函数
"""
set_1={1,3,5,7,9}
set_2={1,5,6,4,8}
temp=set_1 - set_2
temp1=set_1.difference(set_2)
print(temp)
print(temp1)
输出
{9, 3, 7}
{9, 3, 7}
5、下面是判断集合相交问题
判断两个集合是否相交
set1.isdisjoint(set2) 判断不相交 True 不相交,False 相交
set_1={1,3,5,7,9}
set_2={1,5,6,4,8}
temp1=set_1.isdisjoint(set_2)
print(temp1)
输出True,说明有相交
True
判断一个集合是否是另一个集合的子集
set1.issubset(set2)
set1 < set2 判断 set1是否为set2的子集
set_1={1,3,5,7,9}
set_2={1,5,6,4,8}
temp=set_1<set_2
temp1=set_1.issubset(set_2)
print(temp)
print(temp1)
输出都为假,说明第一个集合不是第二个集合的子集
False
False
判断一个集合是否是另一个集合的父集
set1.issuperset(set2)
set1 > set2 判断 set1是否为set2的父集
set_1={1,3,5,7,9}
set_2={1,5,6,4,8}
temp=set_1>set_2
temp1=set_1.issuperset(set_2)
print(temp)
print(temp1)
输出False,说明集合1不是集合2的父集
False
总结
以上就是今天要讲的内容,本文仅仅简单介绍了集合的使用,在Python中,集合使用次数频繁,因此对于其操作方法我们的熟练掌握