集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合

集合的三个特性:

  1.确定性 (element必须可hash,不可变类型是可hash的)

  2.互异性(集合中element 不能重复)

  3.无序性(集合中没有先后之分,例如集合:{3,4,6}  等于{6,4,3})

  #集合的存在意义在于去重和关系运算

集合的定义:

st = set('hello')lis = list('hello')print(st)# {'h', 'o', 'l', 'e'}print(lis)# ['h', 'e', 'l', 'l', 'o']# 【注意】dic={}#空花括号{},代表定义字典print('dic type:%s'%type(dic))>>:dic type:<class 'dict'>st = {'h', 'e', 'l', 'l', 'o'}#定义的时候集合内出现了重复的项,但是并没有报错,只是剔除了重复elementprint(st)# {'h', 'o', 'l', 'e'}

1)集合是无序的, 不重复的数据类型; 2)因此不支持索引,也不支持切片;也不支持重复;也不支持连接; 3)支持成员操作符; 4)支持for循环;

# print(type(set([i for i in range(0, 9)])))lis = [i for i in range(0, 9)]d = {}.fromkeys(lis)# print(type(d))# print(d)# print(d.keys())# for key in d.keys():#     print(key)

st = set([i for i in range(0, 3)])# print('st type:%s st:%s' % (type(st), st))# st type:<class 'set'> st:{0, 1, 2}

# 增加 element

st.add('new element')st2 = {9, 8, 7, }

#更新st.update(st2)  # 可以看成集合的凭接吗st.update('t')  # 单个元素,或者是集合本身也可以进行拼接# st.add({'b', 'y'})  # 报错   TypeError: unhashable type: 'set'# print(st)

# 查找 elements1 = set({i for i in range(1, 8)})s2 = set({i for i in range(6, 10)})

# 交集# print(s1 & s2)  # {6, 7}# print(s1.intersection(s2)) # {6, 7}# s1.intersection_update(s2)# print(s1) # {6, 7}

# 并集# print(s1 | s2)#        {1, 2, 3, 4, 5, 6, 7, 8, 9}# print(s1.union(s2))  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

# 差集# print(s1 - s2)# {1, 2, 3, 4, 5}# print(s2 - s1)# {8, 9}#st.difference(s2)## #对等差分   [取反 交集]# print(s1 ^ s2) #{1, 2, 3, 4, 5, 8, 9}

#超集和子集
boys = {'zzy','yqw','dw','wzc','lyb','wym','chy'}
zoudu = {'wzc','lyb','wym'}
girls = {'lsy','mmf','syj'}

#issuperset()  检测当前集合是否是另一个集合的超集
result = boys.issuperset(zoudu)
print(result)

#issubset()  检测当前集合是否是另一个集合的子集
result = zoudu.issubset(boys)
print(result)

#isdisjoint()  检测2个集合是否不存在交集  存在交集 False
result = boys.isdisjoint(girls)
print(result)

# 删除# print(st)# print(len(st))st.remove('new element')#删除指定的元素,不存在报错st.remove(2)# print(st.pop())#随机删除并且返回集合中某个值# print(st.pop())# print(st.pop())# print(st.pop())# print(st.pop())# print(st.pop())# print(st.pop())#假如集合没有元素了,会报错 KeyError: 'pop from an empty set'
st.discard(3)st.discard(3)#删除指定元素 假如元素不存在 不会报错

#清空集合st.clear()
#赋值集合new_st =st.copy()

print(st)

dic = {k: v for k, v in enumerate(range(2, 6))}# {0, 1, 't', 7, 8, 9}

print("dic type:%s  dic value:%s" % (type(dic), dic))# dic type:<class 'dict'>  dic value:{0: 2, 1: 3, 2: 4, 3: 5}

print('dic.pop:%s' % dic.pop(2))  # dic.pop:4
成员检测:result_in = 2 in stresult_not = 2 not in stprint(result_in)print(result_not)

集合推导式:st_1 = { key_value  for key_value in range(2,8) }

带有判断的集合推导式st_2 = { key_value  for key_value in range(2,17) if (key_value%2)==1 }


#冰冻集合
#冰冻集合是一种特殊的集合类型,也是集合(集合是列表的话,冰冻集合就是元组)
#创建冰冻集合
#一般不会创建空的冰冻集合
var = frozenset()
print(var,type(var))

#带有数据的冰冻集合
var = frozenset(('qs','szx','bjh','acs'))# 不可变集合
print(var,type(var))

#成员检测
result = 'szx' in var
print(result)

#遍历冰冻集合
for i in var:
    print(i)

#集合推导式(无法得到冰冻集合,可以得到集合,列表,元组,字典类型)
result = {i for i in var}
print(result,type(result))

#函数
#冰冻集合可以使用集合的函数(不修改集合本身的函数都可以使用)
var = frozenset(('qs','szx','bjh','acs'))

#copy()
result = var.copy()
print(result)

#集合操作  交集,并集,差集,对称差集等  不修改冰冻集合本身就能使用:冰冻集合的操作结果都是冰冻集合
var1 = frozenset(('qs','szx','bjh','acs'))
var2 = {'szx','bjh','lc','wb'}

#冰冻集合操作
result = var1.union(var2)
print(result)

#普通集合操作(冰冻集合是参考集合)
result = var2.union(var1)
print(result)


python 数据类型 之 集合的更多相关文章

  1. 【转】Python数据类型之“集合(Sets)与映射(Mapping)”

    [转]Python数据类型之“集合(Sets)与映射(Mapping)” 一.集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的 ...

  2. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之集合类型(set)

    集合!Python中的集合数据基本上是为了方便数学计算使用的. 什么是集合? 集合就是“确定的一堆东西”.集合里面的东西叫做元素. 特点:1. 集合里面是没有重复的元素的.           2. ...

  3. 7、python数据类型之集合set

    数据类型之集合setset 不允许重复的无序集合,不能通过下标取值,因为无序1.创建   创建空集合   s ={} 默认类型为字典,所以不是空集合,空集合如下   s = set()   s = { ...

  4. python 数据类型之集合

    一.集合的定义: 定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key. 特性:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 二 ...

  5. Python数据类型-8 集合set

    集合set set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素.集合使用大括号({})框定元素,并以逗号进行分隔.但是注意:如果要创建一个空集合,必须用 set() 而不是 {} ...

  6. Python—数据类型之集合(Set)

    1.集合是一个无序的,且不重复元素的集合.它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的. 2.基本功能包括关系测试和消除重复元素.注意:集合存在的意义就是去 ...

  7. Python数据类型之“集合(Sets)与映射(Mapping)”

    一.集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的重复.以及科学计算,例如交集.并集.差分和对称差分.通俗点来说,集合是一个 ...

  8. Python基础-python数据类型之集合(四)

    集合 集合是一个无序的,不重复的数据组合,基本功能包括关系测试和消除重复元素. 集合对象还支持 union,intersection,difference和 sysmmetric difference ...

  9. python数据类型之集合

    对python中集合的理解 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = set ...

随机推荐

  1. Delphi XE3通过ADOConnection 连接 MySQL 5.5.27 数据库

    Delphi XE3通过ADOConnection 连接 MySQL 5.5.27 数据库 unit Unit1; interface uses Winapi.Windows, Winapi.Mess ...

  2. http post 接口

    集团需求管理系统通过网状网与给各省公司需求管理系统进行交互.落地方为发起方提供访问的URL,发起方使用HTTP POST方法发送请求报文并得到应答报文,发起方作为落地方的HTTP客户端,落地方作为发起 ...

  3. win8安装iis asp.net

    http://www.sanrengo.net/thread-62-1-1.html本文主要解决的是在win8操作系统下IIS配置asp.net的运行环境,当然win7的配置方法也大致相似,只有少许部 ...

  4. eclipse maven项目 热部署

    热部署:本地项目一键发布到远程服务器中 热部署步骤: 1. 在tomat/conf/tomcat-users.xml添加 <role rolename="manager-gui&quo ...

  5. tf.Variable和tensor的区别(转)

    刷课过程中思考到Variable和Tensor之间的区别,尝试发现在如下代码中: a = tf.Variable(tf.ones(1)) b = tf.add(a,tf.ones(1)) 1 2 a是 ...

  6. vue pros 子组件接收父组件传递的值

    1.子组件 ItemTemplate.vue <template> <div class="item"> <li v-for="pdata ...

  7. nmap使用

    Nmap使用 Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp. Nmap可以完成以下任务: 主机探测 端口扫描 版本检测 系统检测 支持探测脚本的编写 Nmap在实际中应 ...

  8. Bootstrap 轮播

    [Bootstrap 轮播] 1.要设置一个轮播界面,需要注意以下几点: 1)根div 必须为 class="carousel slide" 2)根div下含有三块子div a)& ...

  9. c# 用户页面

    第一步: 第二步: 第三步: 结果:

  10. MVC003之调用BLL层方法(BLL层调用了WebService)

    项目又BLL类库,在类库中引用了webservice.在web层调用BLL的方法时 错误如下: 在 ServiceModel 客户端配置部分中,找不到引用协定“OAService.IntranetSe ...