博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3基本数据类型之set
阅读量:6676 次
发布时间:2019-06-25

本文共 2350 字,大约阅读时间需要 7 分钟。

一、定义

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

集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。

set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性:

1.不重复2.元素为不可变对象

二、创建

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))OUTPUT:{'o', 'b', 'y'} 
{'o', 'b', 'y'}
{'k1', 'k2'}
{'k1', 'k2'}
{('k1', 'k2', 'k2')}

三、基本操作

比较

se = {11, 22, 33}be = {22, 55}temp1 = se.difference(be)        #找到se中存在,be中不存在的集合,返回新值print(temp1)        #{33, 11}print(se)        #{33, 11, 22}temp2 = se.difference_update(be) #找到se中存在,be中不存在的集合,覆盖掉seprint(temp2)        #Noneprint(se)           #{33, 11},

删除

discard()、remove()、pop()se = {11, 22, 33}se.discard(11)se.discard(44)  # 移除不存的元素不会报错print(se)se = {11, 22, 33}se.remove(11)se.remove(44)  # 移除不存的元素会报错print(se)se = {11, 22, 33}  # 移除末尾元素并把移除的元素赋给新值temp = se.pop()print(temp)  # 33print(se) # {11, 22}

取交集

se = {11, 22, 33}be = {22, 55}temp1 = se.intersection(be)             #取交集,赋给新值print(temp1)  # 22print(se)  # {11, 22, 33}temp2 = se.intersection_update(be)      #取交集并更新自己print(temp2)  # Noneprint(se)  # 22

判断

se = {11, 22, 33}be = {22}print(se.isdisjoint(be))        #False,判断是否不存在交集(有交集False,无交集True)print(se.issubset(be))          #False,判断se是否是be的子集合print(se.issuperset(be))        #True,判断se是否是be的父集合

合并

se = {11, 22, 33}be = {22}temp1 = se.symmetric_difference(be)  # 合并不同项,并赋新值print(temp1)    #{33, 11}print(se)       #{33, 11, 22}temp2 = se.symmetric_difference_update(be)  # 合并不同项,并更新自己print(temp2)    #Noneprint(se)             #{33, 11}

取并集

se = {11, 22, 33}be = {22,44,55}temp=se.union(be)   #取并集,并赋新值print(se)       #{33, 11, 22}print(temp)     #{33, 22, 55, 11, 44}

更新

se = {11, 22, 33}be = {22,44,55}se.update(be)  # 把se和be合并,得出的值覆盖seprint(se)se.update([66, 77])  # 可增加迭代项print(se)

集合的转换

se = set(range(4))li = list(se)tu = tuple(se)st = str(se)print(li,type(li))print(tu,type(tu))print(st,type(st))OUTPUT:[0, 1, 2, 3] 
(0, 1, 2, 3)
{0, 1, 2, 3}

转载于:https://blog.51cto.com/12254228/2298269

你可能感兴趣的文章
Magento时代的全球开源网店系统格局(一)
查看>>
浅谈linux菜鸟初学正确认识Linux和学习
查看>>
linux启动流程
查看>>
多核平台下的Java优化
查看>>
[转载] 信息系统项目管理师视频教程——07 信息系统建设
查看>>
Image控件
查看>>
查询转换
查看>>
linux通过ant+jenkins打包问题
查看>>
【BZOJ 1068】[SCOI2007]压缩
查看>>
【BZOJ 1001】[BeiJing2006]狼抓兔子
查看>>
基于 java 注解的 csv 文件读写框架
查看>>
贝塞尔曲线
查看>>
PHP5多态性与动态绑定方法
查看>>
JQuery常用选择器,方法,正则表达式
查看>>
Centos 6.4 搭建SVN服务
查看>>
MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
查看>>
Spring常用注解
查看>>
shell编程 select for循环
查看>>
2015年终总结
查看>>
Java中如何计算日期之间的天数
查看>>