Python Set集合

Set集合

阅读本文需要3分钟

2019.09.05

  • 集合(set)是一个无序不重复元素的序列。
  • 基本功能是进行成员关系测试和删除重复元素。
  • 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
# 集合的定义
set1 = set()  #定义一个空的集合
set2 = {1,2,3}

# 增加一个元素
set1.add(5)

#增加多个:
set1.update([5,6,7,8])

#删除某个值
set1.remove(1)

#查:无法通过下标索引

#改:不可变类型无法修改元素

a={10,20,30}
b={20,50}
print(a - b)     # a和b的差集
{10,30}
print(a | b)     # a和b的并集
{10, 20, 30, 50}
print(a & b)     # a和b的交集
{20}
print(a ^ b)     # a和b中不同时存在的元素 {50, 10, 30}

集合的遍历:

1.普通序列的遍历

    for 变量 in 集合:
        使用变量

2.多级集合

    集合 = {(值,值..),(值,值..)。。。}

    for 变量1,变量2 in 集合:

        使用变量1和变量2

集合的序列函数:

  • len() 计算集合的长度
  • max() 获取集合中的最大值
  • min() 获取集合中的最小值
  • set() 创建空集合或者将其他数据转换为集合

集合中的方法:

  • add -- 增加集合元素
name = {'d', 's'}
name.add('d')
name
返回结果:{'d', 's'}
name.add('sd')
name
返回结果:{'sd', 'd', 's'}
  • update--更新已有集合
name = {'sd', 'd', 's'}
name.update('df')
name
返回结果:{'sd', 'd', 'f', 's'}
  • remove--移除指定集合元素
name = {'sd','d','s'}
name.remove('s')
返回结果:name
{'sd', 'd'}
  • discard--移除元素
name = {'sd', 'd', 's'}
name.discard('s')
返回结果:name
        {'sd', 'd'}

# remove移除非成员值会报错,discard移除非成员值,啥也不错!
  • clear--清空集合元素
name = {'d', 's'}
name.clear()
name
返回结果:{}
  • copy--浅拷贝
name = {'sd', 'd', 's'}
li = name.copy()
返回结果:li
        {'sd', 'd', 's'}
  • difference -- 求差集
name.difference(li)
set()
>>> name.difference()
{'sd', 'd', 's'}
  • union--并集,创建新的对象
name = {'sd', 'd', 's'}
li = {'s', 'd','h'}
name.union(li)
返回结果:{'h', 's', 'd', 'sd'}
  • difference_update---删除当前set中的所有包含在 new set 里的元素
li = ('s', 'd')
name = {'sd', 'd', 's'}
name.difference_update(li)
name
返回结果:{'sd'}
  • intersection--取交集,建立新的set集合
li = ('s', 'd')
name = {'sd', 'd', 's'}
name.intersection(li)
返回结果:{'d', 's'}
  • intersection_update--取交集,更新原来的set集合
li = ('s', 'd')
name = {'sd', 'd', 's'}
name.intersection_update(li)
返回结果:{'d', 's'}
  • isdisjoint--判断没有交集,返回True,否则,返回False
li = {'s', 'd'}
name = {'sd', 'd', 's'}
name.isdisjoint(li)
  • issubset--判断是否是子集
li = {'s', 'd'}
name = {'sd', 'd', 's'}
name.issubset(li)  #判断name是不是li的子集
返回结果:False
li.issubset(name)  #判断li是不是name的子集
返回结果:True
  • issuperset--判断是否是父集
li = {'s', 'd'}
name = {'sd', 'd', 's'}
name.issuperset(li)  #判断name是不是li的父集
返回结果:True
li.issuperset(name)  #判断li是不是name的父集
返回结果:False
  • pop--移除集合元素
name = {'sd', 'd', 's'}
name.pop()
返回结果:'sd' #同一个集合,删除集合元素的顺序固定
se1 = {'a','s','sb'}
se1.pop()
返回结果:'sb'
  • symmetric_difference--去两个集合的差集,建立新的set集合对象
name = {'sd', 'd', 's'}
li = {'s', 'd'}
name.symmetric_difference(li)
返回结果:{'sd'}
  • symmetric_difference_update--去两个集合的差集,更新原来的集合对象
name = {'sd', 'd', 's'}
li = {'s', 'd'}
name.symmetric_difference_update(li)
返回结果:{'sd'}

1

END

岁月有你,惜惜相处

发现更多精彩

关注公众号

本文分享自微信公众号 - Python 知识大全(TuoLaJi522),作者:厅长大人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 必掌握的技巧之一

    结果会返回目录中所有文件列表,包括所有文件,子目录,符号链接等等。如果你需要通过某种方式过滤数据,可以考虑结合 os.path 库中的一些函数来使用列表推导。

    Python知识大全
  • Python 3.8 新功能

    Python 3.8 是 Python 编程语言的最新主要版本, 它包含许多新功能和优化。

    Python知识大全
  • 她的野战案例

    $ scrapy crawl dbbook #结果返回403错误(服务器端拒绝访问)。

    Python知识大全
  • get和post表单提交

    GET的提交方式,用户输入结果会显示在地址栏,安全性不好,地址栏提交数据大小限制2K。

    十月梦想
  • Graphql入门

    GraphQL是一个查询语言,由Facebook开发,用于替换RESTful API。服务端可以用任何的语言实现。具体的你可以查看Facebook关于Graph...

    查理大叔
  • pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能

    首先拉取 Redis 镜像, 这里我选择的是 redis:alpine 轻量级镜像版本:

    素质
  • [python]父类、子类、子类实例属性

    py3study
  • xcode编译的时候陷入无限indexing的问题笔记

    “Swift因为有类型推断,一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型”,而事实上,...

    练小习
  • 【python】redis模块

    windows下载地址:https://github.com/MSOpenTech/redis/releases

    py3study
  • python PAM30 PAMIE

    安装PAM30,由于没有直接的安装文件 需要下载压缩包 然后把压缩吧解压至python/Lib/site-package/下

    py3study

扫码关注云+社区

领取腾讯云代金券