Python - 集合与元素之集合定义和基本操作方法
集合(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 - 集合与元素之集合定义和基本操作方法的更多相关文章
- 【python基础】之元组 集合 字典
元组 元组:元组和列表类似.但是元组中的元素是固定的(不能给一个元组添加,删除和替换元素以及重新排序) 1.创建元组 t1 = () #创建一个空元组 t2 = (1, 2, 3) t3 = tupl ...
- 六、Python集合定义和基本操作方法
一.集合的定义方法及特点 1.特点: (1)由不同元素组成 #集合由不同元素构成 s={1,2,3,3,4,3,3,} print(s)#运行结果:{1, 2, 3, 4} (2)集合无序 #集合无序 ...
- 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表
python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...
- 定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素, 判断是否为空,清除集合, 返回集合里元素的个数等常用操作。
package com.lanxi.demo2; import java.util.HashSet; import java.util.Iterator; import java.util.Set; ...
- 洗礼灵魂,修炼python(7)--元组,集合,不可变集合
前面已经把列表的基本用法讲解完 接着讲python的几大核心之--元组(tuple) 1.什么是元组? 类似列表,但为不可变对象,之前提到列表是可变对象,所谓可变对象就是支持原处修改,并且在修改前后对 ...
- Python数据结构之四——set(集合)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...
- Python基础__字典、集合、运算符
之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合.一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I' ...
- python全栈开发-Day5 集合
python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...
- python之数据类型补充、集合、深浅copy
一.内容回顾 代码块: 一个函数,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块. is == id id()查询对象的内存地址 == 比较的是两边的数值. is 比较的是两边的内存地址 ...
随机推荐
- spss logistic回归分析结果如何分析
spss logistic回归分析结果如何分析 如何用spss17.0进行二元和多元logistic回归分析 一.二元logistic回归分析 二元logistic回归分析的前提为因变量是可以转化为0 ...
- D3.js+Es6+webpack构建人物关系图(力导向图)
功能列表:1. 增加下载SVG转PNG功能,图片尺寸超出可视区域也能够下载全部显示出来2. 增加图谱放大缩小平移功能3. 增加图谱初始化加载时自动缩放功能4. 增加导出excel功能,配合后台工具类达 ...
- 学SpringBoot一篇就够了
1.SpringBoot概述 Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 ...
- Django之单表查询——神奇的双下划线
1.filter中的单表查询 # 查询id>1且id<4的结果 ret = models.Person.objects.filter(id__gt=1,id__lt=4) print(re ...
- PyInstaller打包Python源文件为可执行程序exe
1. 安装PyInstaller 使用命令:pip install PyInstaller时可能会由于网络的问题出现以下问题: pip._vendor.urllib3.exceptions.ReadT ...
- 如果try中有return那么finally中不要有return不然不会执行try中的return
public class TryExer { public static void main(String[] args) { String test = test(); System.out.pri ...
- ubuntu解压/压缩rar文件
一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简单的,只需要两个步骤就可以迅速搞定.ubuntu 下ra ...
- 开机自动调用.bat文件且浏览器全屏展示
1,将 .bat文件放入到以下路径中 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 或 C:\Users\Administr ...
- 制作FastDFS的RPM包
首先获取fastdfs的源码,因为fastdfs还依赖一个libfastcommon的库,所以也要准备好. fastdfs的源码目录结构: libfastcommon的源码目录结构: 接下来将以Cen ...
- apache日志配置一例,包括指定存储目录与格式、自动删除过期的日志文件
有需要的朋友可以参考下(http://www.nanke0834.com) 1.vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 添加或修改为:复 ...