集合(set)

定义:由不同元素组成的集合,集合中是一组无序排列可hash的值(不可变的值)例如数字、字符串、元组,可以作为字典的key

定义集合:

# 定义集合
s = {1, 2, 3, 3, 3, 4, 5}
print(s)
print(type(s))

输出:

{1, 2, 3, 4, 5}
<class 'set'>

定义可变集合set

# 定义可变集合
s = set("hello") # ()内为可迭代类型
print(s)

输出:

{'l', 'h', 'o', 'e'}

定义不可变集合

# 定义不可变集合
s = frozenset("hello") # ()内为可迭代类型
print(s)

输出:

frozenset({'l', 'h', 'e', 'o'})

集合关系运算(方法)

  1、intersection()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求交集
print(num1.intersection(num2))
# 相当于
print(num1 & num2)

输出:

{2, 3}
{2, 3}

  2、union()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求并集
print(num1.union(num2))
# 相当于
print(num1 | num2

输出:

{1, 2, 3, 4}
{1, 2, 3, 4}

  3、difference()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求差集
print(num1.difference(num2)) # 输出num1中有num2中没有的
# 相当于
print(num1 - num2)

输出:

{1}
{1}

  4、symmetric_difference()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求交差补集
print(num1.symmetric_difference(num2)) # 并集合交集的差集
# 相当于
print(num1 ^ num2)

输出:

{1, 4}
{1, 4}

方法

  1、add()

s = {1, 2, 3, 4}
# 添加一个元素
s.add((1, 2))
s.add(1)
print(s)

输出:

{(1, 2), 1, 2, 3, 4}

  2、clear()

  3、copy()

  4、pop()(随机删除)

s = {1, 2, 3, 4, "Aiden", 5, 6, 7, 8}
# 随机删除
s.pop()
print(s)

输出:

{1, 2, 3, 4, 5, 6, 7, 8}

  5、remove()

s = {1, 2, 3, 4, "Aiden", 5, 6, 7, 8}
# 指定元素删除
s.remove(3) # 指定的元素不存在会报错
print(s)

输出:

{'Aiden', 1, 2, 4, 5, 6, 7, 8}

  6、discard()

s = {1, 2, 3, 4, "Aiden", 5, 6, 7, 8}
# 指定元素删除
s.discard(3) # 指定的元素不存在不会报错
print(s)
s.discard(12)
print(s)

输出:

{1, 2, 4, 5, 6, 7, 8, 'Aiden'}

  7、difference_update()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求完num1和num2的差集后自动复制给num1
num1.difference_update(num2)
print(num1)

输出:

{1}

  8、intersection_update()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求完num1和num2的交集后自动复制给num1
num1.intersection_update(num2)
print(num1)

输出:

{2, 3}

  9、isdisjoint()

num1 = {1, 2}
num2 = {3, 4}
# 判断两个集合是否互斥
print(num1.isdisjoint(num2))

输出:

True

  10、issubset()

num1 = {1, 2}
num2 = {1, 2, 3}
# 判断num1是否为num2的子集
print(num1.issubset(num2)) # 相当于print(num1 <= num2)

输出:

True

  11、issuperset()

num1 = {1, 2}
num2 = {1, 2, 3}
# 判断num2是否为num1的父集
print(num2.issuperset(num1)) # 相当于print(num2 >= num1)  

输出:

True

  12、symmetric_difference_update()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# 求交差补集并把结果赋给num1
num1.symmetric_difference_update(num2)
print(num1)

输出:

{1, 4}

  13、update()

num1 = {1, 2, 3}
num2 = {2, 3, 4}
# update可以更新多个值
# 相当于取并集后赋值
# num1.update(num2)
# num1.update((4, 5))
num1.update([4, 5])
print(num1)

输出:

{1, 2, 3, 4, 5}

  14、根据集合的特点可简单去重(无序)

Python - 集合与元素之集合定义和基本操作方法的更多相关文章

  1. 【python基础】之元组 集合 字典

    元组 元组:元组和列表类似.但是元组中的元素是固定的(不能给一个元组添加,删除和替换元素以及重新排序) 1.创建元组 t1 = () #创建一个空元组 t2 = (1, 2, 3) t3 = tupl ...

  2. 六、Python集合定义和基本操作方法

    一.集合的定义方法及特点 1.特点: (1)由不同元素组成 #集合由不同元素构成 s={1,2,3,3,4,3,3,} print(s)#运行结果:{1, 2, 3, 4} (2)集合无序 #集合无序 ...

  3. 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表

    python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...

  4. 定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素, 判断是否为空,清除集合, 返回集合里元素的个数等常用操作。

    package com.lanxi.demo2; import java.util.HashSet; import java.util.Iterator; import java.util.Set; ...

  5. 洗礼灵魂,修炼python(7)--元组,集合,不可变集合

    前面已经把列表的基本用法讲解完 接着讲python的几大核心之--元组(tuple) 1.什么是元组? 类似列表,但为不可变对象,之前提到列表是可变对象,所谓可变对象就是支持原处修改,并且在修改前后对 ...

  6. Python数据结构之四——set(集合)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...

  7. Python基础__字典、集合、运算符

    之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合.一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I' ...

  8. python全栈开发-Day5 集合

    python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...

  9. python之数据类型补充、集合、深浅copy

    一.内容回顾 代码块: 一个函数,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块. is == id id()查询对象的内存地址 == 比较的是两边的数值. is 比较的是两边的内存地址 ...

随机推荐

  1. vue导航条选中项样式

    html: <div id="app"> <div class="collection"> <a href="#!&qu ...

  2. spring boot过滤器FilterRegistrationBean

    有2种方式可以实现过滤器 1:通过FilterRegistrationBean实例注册 2:通过@WebFilter注解生效 这里选择第一种,因为第二种不能设置过滤器之间的优先级 为了演示优先级,这里 ...

  3. 面试系列25 dubbo的spi思想是什么

    spi,简单来说,就是service provider interface,说白了是什么意思呢,比如你有个接口,现在这个接口有3个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要s ...

  4. HTML中被废弃的标签<b><u><i><s>

    <strong>代替<b>给文字加粗 <ins>代替<u>给文本添加下划线 <em>代替<i>将文本倾斜 <del> ...

  5. java笔试之完全数计算

    完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数. 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身. 例如:28,它有约数1.2.4.7.14. ...

  6. es6 + 笔记整理

    1. ES6提供了默认参数值机制,允许你为参数设置默认值,防止在函数被调用时没有传入这些参数: const required = () => {throw new Error('Missing ...

  7. JedisCluster API 整理

    windows版redis启动服务器命令:redis-server redis.windows.conf 图表来自菜鸟教程: 列表的操作命令 序号 命令及描述 1 BLPOP key1 [key2 ] ...

  8. 二分图——多重匹配模板hdu1669

    好像多重匹配一般是用网络流来做的.. 这是匈牙利算法的模板:lim是每个组的上界 思路是每个组都可以匹配lim个点,那么当点x遇到的组匹配的点数还没有超过lim时,直接匹配即可 如果已经等于了lim, ...

  9. FFmpeg工具

    [0]安装ffmpeg //Linux系统下安装sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update ...

  10. Lab 2 内存管理

    常见的操作系统 只使用了 0 和3 段选择子 DPL 是段描述符的内容 段的信息 中断和陷入的 大致特权级的展现 RPL 当前要访问数据段对饮给的特权级 CPL 当前代码段的特权级 DPL 全局的 通 ...