Python中的集合


前言

`

由于前面一篇文章对于集合的描述过少,所以单独写这篇文章来讲述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中,集合使用次数频繁,因此对于其操作方法我们的熟练掌握

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值