07_Python数据类型_集合

news2024/12/23 8:36:54

在这里插入图片描述

Python的基础数据类型

  • 数值类型:整数、浮点数、复数、布尔
  • 字符串
  • 容器类型:列表、元祖、字典、集合

集合

集合(set)是Python中一个非常强大的数据类型,它存储的是一组无序且不重复的元素,集合中的元素必须是不可变的,且元素之间用逗号隔开,集合的元素之间用大括号括起来。集合是可变数据类型。

集合的特点:

  • 确定性:集合中的元素是不可变类型。集合是可变数据类型。
  • 互异性:集合中的元素互不相同,不能重复,元素是唯一的。
  • 无序性:集合中的元素无序,即不能通过索引访问集合中的元素。只能遍历。

定义集合

可以使用大括号 {} 或者 set() 函数来创建集合。如果使用大括号,则至少需要包含一个元素;如果使用 set(),则可以创建一个空集合。

# 创建一个空集合
empty_set = set()
# 创建一个包含一个元素的集合
single_element_set = {1}
# 创建一个包含几个元素的集合
my_set = {1, 2, 3, 'a', 'b', 'c'}

访问集合元素

由于集合是无序的,因此不能通过索引来访问元素。但是,可以使用循环来遍历集合中的所有元素。

# 遍历集合
for element in my_set:
    print(element)

集合操作

集合支持多种操作,如并集、交集、差集等。

  • 并集(Union):使用 | 运算符或 union() 方法。
  • 交集(Intersection):使用 & 运算符或 intersection() 方法。
  • 差集(Difference):使用 - 运算符或 difference() 方法。
  • 对称差集(Symmetric Difference):使用 ^ 运算符或 symmetric_difference() 方法。
# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# 并集
union_set = set1 | set2  # 或 set1.union(set2)
union_set1 = set1.union(set2)
print(union_set)
print(union_set1)
# 交集
intersection_set = set1 & set2  # 或 set1.intersection(set2)
intersection_set1 = set1.intersection(set2)
print(intersection_set)
print(intersection_set1)
# 差集
difference_set = set1 - set2  # 或 set1.difference(set2)
difference_set1 = set1.difference(set2)
print(difference_set)
print(difference_set1)
# 对称差集
symmetric_difference_set = set1 ^ set2  # 或 set1.symmetric_difference(set2)
symmetric_difference_set1 = set1.symmetric_difference(set2)
print(symmetric_difference_set)
print(symmetric_difference_set1)

集合方法

集合还提供了许多有用的方法,如:

  • add():向集合中添加一个元素。
  • remove():从集合中移除一个元素,如果元素不存在,则抛出 KeyError。
  • discard():从集合中移除一个元素,如果元素不存在,则什么也不做。
  • pop():随机移除并返回集合中的一个元素。
  • clear():清空集合中的所有元素。
# 向集合中添加元素
my_set.add('d')
print(my_set)

# 从集合中移除元素
my_set.remove('a')
print(my_set)

# 清空集合
my_set.clear()
print(my_set)

集合推导式

与列表推导式类似,集合推导式可以用来生成集合。

# 创建一个包含0-9每个数字的平方的集合
squared_set = {x**2 for x in range(10)}
print(squared_set)
# 列表推导式
s = {8, 3, 1, 5, 11}
{i * 2 for i in s}

集合在Python中是一种非常有用的数据类型,特别是在需要快速检查元素是否存在或执行集合运算时。

附件

本文对应的jupyter notebook源码链接,欢迎下载练习:https://download.csdn.net/download/fx_yzjy101/89760705

如有问题请留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2141567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 消息队列RabbitMQ死信交换机

介绍 生产者发送消息时指定一个时间,消费者不会立刻收到消息,而是在指定时间之后才收到消息。 死信交换机 当一个队列中的消息满足下列情况之一时,就会成为死信(dead letter) 消费者使用basic.reject或 basic.nack声明消费失败&#xff0…

LidarView之定制版本

介绍 LidarView软件定制开发需要关注几点:1.应用程序名称;2.程序logo;3.Application版本号;4.安装包版本号 应用程序名称 在项目的顶层cmake里边可以指定程序名称 project(LidarView)需要指定跟Superbuild一样的编译类型 set…

英语学习之fruit

目录 不熟悉熟悉 不熟悉 breadfruit 面包果 date 椰枣 raspberry 覆盆子 blackberry 黑莓 blackcurrant 黑加仑,黑醋栗 plum 李子 熟悉 apple 苹果🍎 coconut 椰子🥥 banana 香蕉🍌 tomato 西红柿 pear 梨子 watermelon 西瓜…

30款免费好用的工具,打工人必备!

免费工具软件,办公人必备,提升工作效率 启动盘制作:Ventoype工具:微PEwindows/office jh工具:HEU KMS Activator桌面资料转移工具:个人资料专业工具右键菜单管理:ContextMenuManager驱动安装&a…

【面试八股总结】GMP模型

GMP概念 G(Goroutine):代表Go协程,是参与调度与执行的最小单位。 存储Goroutine执行栈信息、状态、以及任务函数等。G的数量无限制,理论上只受内存的影响。Goroutines 是并发执行的基本单位,相比于传统的线…

虽难必学系列:Netty

Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架,广泛用于构建各类网络应用,尤其是在高并发、低延迟场景下表现出色。作为一个开源项目,Netty 提供了丰富的功能,使得开发者可以轻松构建协议服务器和客户端应用程序。…

Nginx从入门到入土(一):DNS域名解析

前言 hostName,在Linux系统上是一个命令,用来显示和设置系统的主机名称。其实它就是域名。 常见的域名有我们熟悉的taobao.com;baidu.com等等。 我们在地址栏输入baidu.com 进入的就是此页面。我们看到地址栏里显示的是www.baidu.com 。 注意&#xf…

MySQL篇(运算符)(持续更新迭代)

目录 一、简介 二、运算符使用 1. 算术运算符 1.1. 加法运算符 1.2. 减法运算符 1.3. 乘法与除法运算符 1.4. 求模(求余)运算符 2. 比较运算符 2.1. 等号运算符 2.2. 安全等于运算符 2.3. 不等于运算符 2.4. 空运算符 2.5. 非空运算符 2.6.…

Java数据存储结构——平衡二叉树

文章目录 22.1.3 平衡二叉树22.1.3.1 LL22.1.3.2 LR22.1.3.3 RR22.1.3.4 RL 22.1.3 平衡二叉树 平衡二叉树的特点: 二叉树左右两个子树的高度差不超过1任意节点的左右两个子树都是一颗平衡二叉树 在原来的平衡二叉树中,新增数据会破坏平衡性&#xff…

Linux per memcg lru lock

内核关于per memcg lru lock的重要提交: f9b1038ebccad354256cf84749cbc321b5347497 6168d0da2b479ce25a4647de194045de1bdd1f1d 背景 自电子计算机诞生以来,内存性能一直是行业关心的重点。内存也随着摩尔定律,在大小和速度上一直增长。云…

Linux系统上搭建Vulhub靶场

Linux系统上搭建Vulhub靶场 ​vulhub​ 是一个开源的漏洞靶场,它提供了各种易受攻击的服务和应用程序,供安全研究人员和学习者测试和练习。要在 Linux 系统上安装和运行 vulhub​,可以按照以下步骤进行: 1. 安装 Docker 和 Docke…

数据结构(八)——Java实现七大排序

一、插入排序 1.直接插入排序 public static void insertSort(int []arr){for (int i 0; i < arr.length; i) {int j i-1;int tmp arr[i];for (; j >0 ; j--) {if(arr[j] > tmp){arr[j1] arr[j];}else{break;}}arr[j1] tmp;}}直接插入排序特性总结 1. 元素集合越…

【算法】滑动窗口—最小覆盖子串

题目 ”最小覆盖子串“问题&#xff0c;难度为Hard&#xff0c;题目如下&#xff1a; 给你两个字符串 S 和 T&#xff0c;请你在 S 中找到包含 T 中全部字母的最短子串。如果 S 中没有这样一个子串&#xff0c;则算法返回空串&#xff0c;如果存在这样一个子串&#xff0c;则可…

【三大运营商】大数据平台体系架构【顶层规划设计】

在国内运营商&#xff08;如中国移动、中国联通、中国电信&#xff09;的大数据平台建设中&#xff0c;顶层规划设计至关重要。以下是针对三大运营商为例【如电信】的大数据平台体系架构的顶层规划设计方案&#xff0c;涵盖整体架构、关键组件、数据管理、应用场景等方面。 1. …

C#数据结构与算法实战入门指南

前言 在编程领域&#xff0c;数据结构与算法是构建高效、可靠和可扩展软件系统的基石。它们对于提升程序性能、优化资源利用以及解决复杂问题具有至关重要的作用。今天大姚分享一些非常不错的C#数据结构与算法实战教程&#xff0c;希望可以帮助到有需要的小伙伴。 C#经典十大排…

音视频入门基础:AAC专题(6)——FFmpeg源码中解码ADTS格式的AAC的Header的实现

一、引言 通过FFmpeg命令&#xff1a; ./ffmpeg -i XXX.aac 可以获取到ADTS格式的AAC裸流的音频采样频率、声道数、采样位数、码率等信息&#xff1a; 在vlc中也可以获取到这些信息&#xff08;vlc底层也使用了FFmpeg进行解码&#xff09;&#xff1a; 所以FFmpeg和vlc是怎样…

【混淆矩阵】Confusion Matrix!定量评价的基础!如何计算全面、准确的定量指标去衡量模型分类的好坏??

【混淆矩阵】Confusion Matrix&#xff01;定量评价的基础&#xff01; 如何计算全面、准确的定量指标去衡量模型分类的好坏&#xff1f;&#xff1f; 文章目录 【混淆矩阵】Confusion Matrix&#xff01;定量评价的基础&#xff01;1. 混淆矩阵2.评价指标3.混淆矩阵及评价指标…

Redis基础数据结构之 ziplist 压缩列表 源码解读

目录标题 ziplist 是什么?ziplist 特点ziplist 数据结构ziplist 节点pre_entry_lengthencoding 和 lengthcontent ziplist 基本操作插入&#xff08;Insertion&#xff09;删除&#xff08;Deletion&#xff09;查找&#xff08;Search&#xff09;更新&#xff08;Update&…

Qt多元素控件——QTableWidget

文章目录 QTabWidget核心属性、方法和信号使用示例 QTabWidget核心属性、方法和信号 QTableWidget表示一个表格控件&#xff0c;一个表格中包含若干行&#xff0c;每一行包含若干列。 表格中的每一个单元格&#xff0c;是一个QTableWidgetItem对象。 QTableWidget核心方法&a…

Java 每日一刊(第9期):数组

文章目录 前言什么是数组初始化数组如何访问和操作数组遍历数组多维数组数组的常见操作复制数组排序数组搜索数组 数组的长度和异常处理Arrays 工具类本期小知识 “简单是效率的灵魂。” 前言 这里是分享 Java 相关内容的专刊&#xff0c;每日一更。 本期将为大家带来以下内…