集合类型 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. Maven使用第三方jar文件的两种方法<转>

    http://www.cnblogs.com/sekai/p/5932206.html 今天用上了.. ===================== 在Maven中,使用第三方库一般是通过pom.xml ...

  2. day3 作业

    文件操作用户很广泛,我们经常对文件进行操作: global log 127.0.0.1 local2 daemon maxconn log 127.0.0.1 local2 info defaults ...

  3. C++输入与输出

    1 概述 C和C++都没有将输入和输出建立在语言中,C++将输入输出的解决方案放在类库中(由头文件iostream和fstream中定义的类) C++程序把输入和输出看作字节流.流充当了程序和流源流目 ...

  4. android开发笔记,杂

    Mapping文件地址: mapping文件用于在代码被混淆后,还原BUG信息. release模式编译项目即可产生,相对位置:工程\build\outputs\mapping\release 需要c ...

  5. 借助Visual Studio Code提高基于ActionScript的LayaAir HTML5游戏的调试效率

    借助Visual Studio Code提高基于ActionScript的LayaAir HTML5游戏的调试效率 使用Visual Studio Code(VS Code)调试的优势 借助VS Co ...

  6. 【leetcode】 21. Merge Two Sorted Lists

    题目描述: Merge two sorted linked lists and return it as a new list. The new list should be made by spli ...

  7. CodeForces 811B Vladik and Complicated Book

    离线,树状数组. 数据范围好像有点小,直接暴力可以过的. 我直接上了$n,Q≤100000$的做法:只需要判断区间上比$x$小的数字有几个即可,可以对询问进行离线操作,从左到右一个一个数字插入到树状数 ...

  8. 2018IEEE冬季生物识别学校 5天课程

    里边有很多介绍及相关报告的PPT https://www.comp.hkbu.edu.hk/wsb18/index.php https://www.comp.hkbu.edu.hk/wsb18/pro ...

  9. asp.net core结合Gitlab-CI实现自动化部署

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在之前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,这次讲解一 ...

  10. nyoj 737 石子合并 经典区间 dp

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆 ...