集合类型 set  frozenset

  赋值及去重

    set 是一个无序不重复元素集,还有个frozenset 类型(顾明思议,就是不可改变元素的集合);

    基本功能包括关系测试和消除重复元素;set支持& | - (交、并、差集) 等数学运算

    set 赋值:非空集合由{}标识,逗号隔开元素; 注意,空集合表示为 set() 而不是 {} (这是dict);python 会对set自动去除重复

 s = {}                       # 注意这是 dict类型
print(type(s))
s = set() # 空集合表示方法
print(type(s))
s = {1,1.0}
print(s) # 输出{1.0},可去重 int float类型不区分,输出float
s = [1,2,1,2,1,1,3]
s = set(s) # 强制转换成 set
print(s) # 同样去重了

    同 list 相似,set 也有简单操作,如下:

 s = {1,2,1,2,1,1,3,0}
print(s,len(s)) # len(s) 返回了set包含元素的个数(去重)
print((1.0 in s),(3 in s),(True in s),(False in s)) # 测试是否包含元素,注意0可以对应False,1可以对应True
print(True not in s)

  交、并、差集运算

    表示法:   &      |       -    ; 分别表示交集、并集、及非(具体意思请百度),无对应结果返回空集合,即 set()   示例如下:

 a = {0,1,2}
b = {1,2,3}
print(a&b) # 交集
print(a|b) # 并集
print(a-b) # a差b
print(b-a) # b差a
a = {0,1,2}
b = {3,4,5}
print(a&b) # set()

    一些函数也可作交、并、差运算,详细参见 python list、set 相关参考

  增、删操作

     s.add(elem) 增加;.remove(elem)  .discard(elem)  .pop() 删除;s.clear() 清空;详见下面实例

 s = {0,1,2}
s.add(4) # .add(elem)
s.add(4.0)
s.add("")
print(s)
s.remove(0) # .remove(elem) 去除现有元素,如不存在,会 raise error
print(s)
# s.remove(0) # 报错
s = {0,1,2}
s.discard(0) # .discard(elem) 去除现有元素,如不存在,不会报错
print(s)
s.discard(4) # 不会报错
s = {"a","b","c"}
print(s.pop(),s) # 删除一个不确定的元素,并 return 该元素,若集合为空,会 raise error
s = {1,2,3}
print(s.pop()) # 数字类型好像每次都会pop出最小的1
s = {1,2,3,"b","c"}
print(s.pop()) # pop出不确定的非数字,或者最小的数字1
s.clear()
print(s) # 清空

Python学习(四)数据结构 —— set frozenset的更多相关文章

  1. python学习4—数据结构之列表、元组与字典

    python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...

  2. python学习四(处理数据)

    head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-34,3:21,2.34,2.45 ...

  3. 从0开始的Python学习012数据结构&对象与类

    简介 数据结构是处理数据的结构,或者说,他们是用来存储一组相关数据的. 在Python中三种内建的数据结构--列表.元组和字典.学会了使用它们会使编程变得的简单. 列表 list是处理一组有序的数据结 ...

  4. Python学习笔记——数据结构和算法(一)

    1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data ...

  5. python学习之数据结构

    python的数据很丰富,所以对于数据分析来讲, python是一种最合适的选择 下面讲述一下常见的数据结构,包括栈,队列,元组,字典,集合等,以及对这些数据结构进行操作 #堆栈,后进先出 a=[10 ...

  6. Python学习(四) Python数据类型:序列(重要)

    插播一下,先了解一下Python的数据类型,Python现有的数据类型有好多,最重要的有列表.元组.字典 列表:我觉得可以对应java中的数组 list=['physics', 'chemistry' ...

  7. Python学习(四):模块入门

    1.模块介绍 模块:代码实现的某个功能的集合 模块分类: 自定义模块 内置标准模块 开源模块 模块的常用方法: 是否为主文件:__name__ == '__main__' 如果是直接执行的某程序,那么 ...

  8. Python学习四|变量、对象、引用的介绍

    变量 变量创建:一个变量也就是变量名,就像a,当代码第一次赋值时就创建了它.之后的赋值将会改变已创建的变量名的值,从技术上讲,Python在代码运行之前先检测变量名,可以当成是最初的赋值创建了变量. ...

  9. Python学习笔记——数据结构和算法(二)

    1.字典中一个键映射多个值 可以使用collections中的defaultdict来实现,defalultdict接受list或者set为参数 from collections import def ...

  10. Python学习(四)数据结构(概要)

    Python 数据结构 本章介绍 Python 主要的 built-type(内建数据类型),包括如下: Numeric types          int float Text Sequence ...

随机推荐

  1. [BZOJ4942][Noi2017]整数 线段树+压位

    用线段树来模拟加减法过程,维护连续一段中是否全为0/1. 因为数字很大,我们60位压一位来处理. #include<iostream> #include<cstring> #i ...

  2. bzoj 2115 线性基

    这种路径异或问题,可以转换为一条路径和若干个环的线性组合,然后就能用线性基搞了. 复习了一波线性基. #include<bits/stdc++.h> #define LL long lon ...

  3. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 F - 打铁的箱子

    题目描述 作为彩虹岛上最擅长打铁的人,

  4. 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]

    题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...

  5. zookeeper分布式算法和部署

    算法摘要 安装 配置 监控 创建节点 二阶段提交(Two-Phase Commit) 投票和执行 协调者向参与者发送事务内容,询问是否可以提交,各参与者节点执行事务并向协调者反馈 如果所有参与者反馈y ...

  6. Oracle意外赢官司,程序员或过苦日子

    关于“Google在Android平台使用Java侵犯知识产权”一案,2014年5月,联邦法院判定Oracle获胜,这个结果完全出人意料,因为这样一来无异于打开了软件开发领域中API使用方式的潘多拉之 ...

  7. bzoj 5294: [Bjoi2018]二进制

    Description pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是333 的倍数.他想研究对于二进 制,是否也有类似的性质.于是他生成了一个长为n 的二进制串,希望 ...

  8. 【SPFA+二分答案】BZOJ1614- [Usaco2007 Jan]Telephone Lines架设电话线

    沉迷于刷水 以前的那个二分写法过不了QAQ 换了一种好像大家都比较常用的二分.原因还不是很清楚. [题目大意] 给出一张图,可以将其中k条边的边权减为0,求1到n的路径中最长边的最小值. [思路] 二 ...

  9. Java并发(十二):CAS Unsafe Atomic

    一.Unsafe Java无法直接访问底层操作系统,而是通过本地(native)方法来访问.不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作. 这个类尽管 ...

  10. 扩展gcd codevs 1200 同余方程

    codevs 1200 同余方程 2012年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 求关 ...