当前位置: 首页 > news >正文

Python 列表与元组深度解析:从基础概念到函数实现全攻略

在 Python 编程的广袤天地中,列表(List)和元组(Tuple)是两种不可或缺的数据结构。它们如同程序员手中的瑞士军刀,能高效地处理各类数据。从简单的数值存储到复杂的数据组织,列表和元组都发挥着关键作用。接下来,我们将全面且深入地探索这两种数据结构,详细剖析它们的定义、操作以及相关函数的实现原理,不放过任何一个细节。​

一、列表与元组的基础概念​

1.1 列表(List)​

列表是 Python 中一种有序的、可变的数据集合,使用方括号[]来定义,元素之间通过逗号分隔。列表的元素类型可以灵活多样,包括数字、字符串、布尔值,甚至可以是列表、元组、字典等其他数据结构,这使得列表在存储复杂数据时极具优势。​

# 定义不同类型元素组成的列表
mixed_list = [1, "Python", True, [10, 20], {"name": "Alice"}]
print(mixed_list)

列表的可变性是其核心特性,意味着我们可以随时对列表中的元素进行修改、添加或删除操作。在底层实现上,列表采用动态数组的方式存储数据,当元素数量超过当前分配的内存空间时,会自动申请更大的内存空间,并将原有数据复制过去,这种机制保证了列表可以灵活地调整大小以适应数据变化。​

1.2 元组(Tuple)​

元组同样是有序的数据集合,但与列表不同的是,元组是不可变的,使用圆括号()来表示。尽管元组不可变,但它也能存储不同类型的元素。​

# 定义包含多种元素的元组
my_tuple = (1, "Hello", False, (1, 2, 3))
print(my_tuple)

元组的不可变性带来了数据的稳定性和安全性,常被用于存储不希望被修改的数据,例如数据库连接配置信息、坐标点等。在 Python 内部,元组的内存分配是固定的,一旦创建,其内容和大小就不能再改变,这种特性使得元组在作为字典的键或需要保证数据完整性的场景中表现出色,同时由于无需动态调整内存,在一些性能敏感的场景中,元组的访问效率会更高。​

二、列表与元组的常见操作​

2.1 切片操作​

切片操作是从列表或元组中提取部分元素的强大手段,其语法为[start:stop:step],通过设置不同参数实现灵活的数据提取。这里面的每个参数都有许多值得深入探讨的细节。​

  • start:起始索引(包含该位置元素),省略时默认从 0 开始。当start为负数时,表示从序列末尾开始计数,例如-1表示倒数第一个元素,-2表示倒数第二个元素,以此类推。在实际计算时,start对应的实际索引值为len(sequence) + start。例如,对于列表nums = [1, 2, 3, 4, 5],nums[-2]等同于nums[len(nums) - 2],即4。如果start的绝对值大于序列长度,Python 会将其当作 0 处理。​
  • stop:结束索引(不包含该位置元素),省略时默认到序列末尾。同样,stop也支持负数,计算方式与start类似,实际索引值为len(sequence) + stop。例如,nums[1:-1]表示从索引 1 开始(包含),到倒数第一个元素之前(不包含),即提取[2, 3, 4]。如果stop小于start,且step为正数,切片结果将为空;若step为负数,则会反向提取元素。​
  • step:步长,即相邻元素的间隔,省略时默认为 1。step不能为 0,否则会引发ValueError异常。当step为正数时,切片从start开始,按步长向序列末尾方向提取元素;当step为负数时,切片从start开始,按步长向序列开头方向反向提取元素。例如,nums[::-1]就是以-1为步长,从序列末尾开始,反向提取所有元素,实现列表或元组的反转。​
# 对列表进行切片操作
nums_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 提取索引1到4(不包含4)的元素
print(nums_list[1:4])  # 输出: [2, 3, 4]
# 从索引2开始,提取到末尾,步长为2
print(nums_list[2::2])  # 输出: [3, 5, 7, 9]
# 反向提取所有元素
print(nums_list[::-1])  # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1]
# 从倒数第3个元素开始,到倒数第1个元素(不包含),步长为1
print(nums_list[-3:-1])  # 输出: [7, 8]# 对元组进行切片操作
nums_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9)
print(nums_tuple[1:4])  # 输出: (2, 3, 4)

切片操作返回的是一个新的列表或元组,不会影响原数据。对于列表,切片后的新列表与原列表的元素是独立的,修改新列表的元素不会改变原列表;对于元组,由于其不可变性,切片后得到新元组,原元组保持不变。​

2.2 遍历列表元素​

遍历是逐个访问列表或元组中元素的过程,Python 提供了多种遍历方式,每种方式都有其适用场景和需要注意的细节。​

2.2.1 使用for循环直接遍历​

for循环会自动从序列中取出每个元素,将其赋值给指定变量,然后执行循环体代码。​

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)

在这个过程中,Python 解释器会调用序列的__iter__()方法获取迭代器对象,该迭代器对象实现了__next__()方法。每次循环时,__next__()方法会返回序列中的下一个元素,直到所有元素都被遍历完,此时会引发StopIteration异常,for循环捕获该异常并结束循环。这种方式简洁直观,适用于仅关注元素值,无需索引的场景,如打印列表中的所有字符串。但需要注意的是,如果在循环体中修改了原列表,可能会导致遍历结果不符合预期。例如,在遍历列表时删除元素,可能会跳过一些元素,因为列表长度和元素索引发生了变化。​

2.2.2 使用range函数结合索引遍历​

range()函数用于生成指定范围的整数序列,结合索引可实现对列表或元组的遍历。​

nums = [10, 20, 30, 40, 50]
for index in range(len(nums)):print(nums[index])

range()函数有多种调用形式:​

  • range(stop):生成从 0 到stop - 1的整数序列,如range(5)生成0, 1, 2, 3, 4。在底层,range对象是一个迭代器,它会根据请求按需生成整数,而不是一次性生成所有整数,这样可以节省内存。​
  • range(start, stop):生成从start到stop - 1的整数序列,如range(2, 6)生成2, 3, 4, 5。​
  • range(start, stop, step):按照指定步长生成整数序列,如range(1, 10, 2)生成1, 3, 5, 7, 9。当step为负数时,start必须大于stop,否则生成的序列为空。​

通过索引访问元素,适合需要根据索引位置对元素进行操作的场景,比如修改特定位置的元素。但使用时一定要注意索引范围,当索引为负数时,其计算方式与切片中的负数索引类似,是从序列末尾开始计数。例如,nums[-1]表示访问列表nums的最后一个元素。如果索引超出了序列的范围,无论是正数还是负数索引,都会抛出IndexError异常。​

2.2.3 使用enumerate函数同时获取索引和元素值​

enumerate()函数会将序列转换为包含索引和元素值的枚举对象。​

colors = ["red", "green", "blue"]
for index, color in enumerate(colors):print(f"索引 {index}: {color}")

enumerate()函数内部创建了一个迭代器,每次迭代返回一个包含索引和对应元素的元组。它还支持指定start参数来设置起始索引,如enumerate(colors, start=1)会使索引从 1 开始。在处理大型序列时,enumerate函数的性能表现良好,因为它也是按需生成枚举对象,不会一次性占用大量内存。此外,在需要记录元素位置信息的场景中,如统计某个元素在列表中出现的位置,enumerate函数能大大简化代码逻辑。​

2.2.4 使用while循环遍历​

while循环通过条件判断来控制遍历过程,需要手动管理索引。​

scores = [85, 90, 78, 92]
index = 0
while index < len(scores):print(scores[index])index += 1

在while循环中,每次迭代都要检查条件是否成立,只有当条件为True时才会执行循环体。使用while循环需特别注意确保条件能在合适的时候变为False,否则会导致无限循环,耗尽系统资源。当索引使用负数时,同样要根据序列长度进行正确的计算和判断。例如,要反向遍历列表,可以将条件设置为index > -len(scores),并在循环体中每次将索引减 1。while循环适用于需要根据复杂条件控制遍历的场景,比如在遍历过程中根据元素值动态决定是否继续遍历。​

2.3 新增元素(仅适用于列表)​

2.3.1 append方法​

append()方法用于在列表末尾添加一个元素。​

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # 输出: [1, 2, 3, 4]

在底层实现上,append方法会先检查列表当前的内存空间是否足够容纳新元素。如果空间不足,列表会申请一块更大的连续内存空间,将原有元素复制到新空间,然后将新元素添加到末尾。这就是为什么列表在不断添加元素时,其内存地址可能会发生变化。append方法只能添加单个元素,如果传入列表等可迭代对象,会将其作为一个整体添加到列表中。例如,my_list.append([5, 6]),此时my_list变为[1, 2, 3, 4, [5, 6]],新添加的是一个子列表。​

2.3.2 extend方法​

extend()方法用于将另一个可迭代对象(如列表、元组)的所有元素添加到当前列表末尾。​

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # 输出: [1, 2, 3, 4, 5, 6]

extend方法会迭代传入的可迭代对象,逐个将元素添加到列表中。与append方法不同,它不会将可迭代对象作为一个整体添加,而是将其元素拆分后加入。在实现过程中,extend方法同样会处理内存空间的问题,如果当前列表空间不足,会进行内存扩容。此外,extend方法不仅可以传入列表,还可以传入元组、字符串等可迭代对象。例如,list1.extend((7, 8))会将元组中的元素7和8添加到list1末尾;list1.extend("abc")会将字符串中的字符'a'、'b'、'c'依次添加到列表末尾。​

2.3.3 insert方法​

insert()方法用于在指定索引位置插入一个元素。​

my_list = [1, 2, 3]
my_list.insert(1, 1.5)
print(my_list)  # 输出: [1, 1.5, 2, 3]

insert方法会将指定索引及之后的元素依次向后移动一位,然后将新元素插入到指定位置。在移动元素时,Python 会逐个复制元素到新的位置,这个过程在列表较大时会消耗较多的时间和资源,因此在频繁插入操作的场景下,列表的性能会受到影响。当插入的索引为负数时,其计算方式与其他索引操作类似,是从序列末尾开始计数。例如,my_list.insert(-1, 2.5)会在倒数第二个位置插入元素2.5。如果插入的索引超出了列表的范围,当索引大于等于列表长度时,insert方法的效果等同于append方法,会将元素添加到列表末尾;当索引小于-len(list)时,会将元素插入到列表开头。​

2.4 连接列表(或元组)​

2.4.1 使用+运算符​

+运算符可用于连接两个列表或元组,返回一个新的序列。​

list_a = [1, 2, 3]
list_b = [4, 5, 6]
result_list = list_a + list_b
print(result_list)  # 输出: [1, 2, 3, 4, 5, 6]tuple_a = (1, 2, 3)
tuple_b = (4, 5, 6)
result_tuple = tuple_a + tuple_b
print(result_tuple)  # 输出: (1, 2, 3, 4, 5, 6)

+运算符在连接列表时,会创建一个新列表,其大小为两个列表元素数量之和。然后,依次将两个列表的元素复制到新列表中,这个过程需要额外的内存空间来存储新列表,并且复制元素也会消耗一定的时间。连接元组时,同样会创建新元组,将两个元组的元素组合进去。由于涉及新对象的创建和元素复制,当序列较大时,性能开销较大。此外,+运算符两边的操作数必须是相同类型,即只能列表和列表相加,元组和元组相加,不能混合使用。​

2.4.2 使用*运算符​

*运算符可用于重复列表或元组中的元素,返回一个新的序列。​

my_list = [1, 2]
print(my_list * 3)  # 输出: [1, 2, 1, 2, 1, 2]my_tuple = (1, 2)
print(my_tuple * 3)  # 输出: (1, 2, 1, 2, 1, 2)

*运算符会根据指定的倍数,重复原序列的元素来创建新的序列。在创建新序列时,同样需要分配新的内存空间,并将原序列元素按照倍数复制到新空间中。当倍数为 0 时,会返回一个空的列表或元组;当倍数为负数时,会引发TypeError异常。与+运算符类似,*运算符两边的操作数也必须是相同类型,且只能是列表或元组与整数相乘。​

三、总结​

列表和元组作为 Python 中基础且重要的数据结构,各自拥有独特的特性和丰富的操作方法。从基础概念到各类操作的每一个细节,再到相关函数的实现原理,深入理解它们能让我们在编程过程中更加得心应手。列表的可变性使其在数据动态处理中表现出色,而元组的不可变性则为数据的安全性和性能提供保障。在实际应用中,我们需要根据具体的需求和场景,灵活选择和运用列表与元组,并注意操作中的各种细节,以编写出高效、健壮的 Python 代码,应对各种复杂的编程需求。​

以上内容进一步细化了列表和元组的操作细节。若你对某个部分仍有疑问,比如特定方法在复杂场景下的应用,或是想了解更多性能优化技巧,欢迎随时与我交流。​

相关文章:

Python 列表与元组深度解析:从基础概念到函数实现全攻略

在 Python 编程的广袤天地中&#xff0c;列表&#xff08;List&#xff09;和元组&#xff08;Tuple&#xff09;是两种不可或缺的数据结构。它们如同程序员手中的瑞士军刀&#xff0c;能高效地处理各类数据。从简单的数值存储到复杂的数据组织&#xff0c;列表和元组都发挥着关…...

vue 修改路由动态选择路由 改文件位置

vue 修改路由动态选择路由 改文件位置 main.jspermission.js...

Nginx openresty web服务 与 Go 原生web服务性能对比

1 概述 Nginx采用的是IO复用模型&#xff0c;能处理超高并发。 Go语言采用协程&#xff0c;能轻量级的处理超高并发。 那么在不考虑业务逻辑复杂的前提下&#xff0c;即假如将Nginx和Go都提供一个/test接口&#xff0c;并在接口逻辑中都只是让其做20毫秒的耗时操作&#xff0c…...

【音视频】FFmpeg解封装

解封装 复用器&#xff0c;比如MP4/FLV 解复用器&#xff0c;MP4/FLV 封装格式相关函数 avformat_alloc_context(); 负责申请一个AVFormatContext结构的内存,并进行简单初始化avformat_free_context(); 释放该结构里的所有东西以及该结构本身avformat_close_input();关闭解复…...

autohue.js - 基于 JavaScript 开发的图片背景色提取开源库,能让图片和背景融为一体

图片提取主题色的工具库&#xff0c;可以实现一些酷炫的界面效果。 本文不是 AI 生成&#xff0c;大部分文字都是我自己敲键盘&#xff0c;部分文字摘自 autohue.js 作者主页&#xff0c;请各位放心舒适阅读。 autohue.js 是一个图片背景色提取库&#xff0c;基于提出来的颜色…...

bgp实验.包括联盟,隧道相关,以及一个低级错误

实验拓扑 低级错误 在配置隧道时,目标的单词是destination,我自动补全为description了,这个问题花了我40分钟 划分ip AS2内骨干网,一个网段需要两个地址,主机位2位,掩码30 需要6个 172.16.0.000000 00 172.16.0.0/30 172.16.0.000001 00 172.16.0.4/30 172.16.0.000010 00 1…...

科普动画短视频制作:角色塑造的魅力法则

宝子们&#xff0c;在科普动画短视频的世界里&#xff0c;角色塑造可是让作品出彩的关键&#xff01;今天就来和大家唠唠那些超实用的角色塑造法则&#xff0c;还会给大家推荐一款超好用的工具哦~ 一、独特外形&#xff0c;吸睛第一步 在科普动画短视频制作中&#xff0c;角色…...

【飞渡科技数字孪生虚拟环境部署与集成教程 - CloudMaster实战指南】

飞渡科技数字孪生虚拟环境部署与集成教程 - CloudMaster实战指南 前言 本教程详细记录了飞渡科技的数字孪生平台CloudMaster的配置过程&#xff0c;以及如何将三维数字孪生场景集成到前端项目中。数字孪生技术能够在虚拟环境中精确复现物理实体的数据、特性和行为&#xff0c…...

MongoDB 集合名称映射问题

项目场景 在使用 Spring Data MongoDB 进行开发时&#xff0c;定义了一个名为 CompetitionSignUpLog 的实体类&#xff0c;并创建了对应的 Repository 接口。需要明确该实体类在 MongoDB 中实际对应的集合名称是 CompetitionSignUpLog 还是 competitionSignUpLog。 问题描述 …...

禁止ubuntu自动更新

由于ubuntu server和desktop版本都默认 启动了&#xff0c;自动更新内核的操作。这对于生 产环境来说是不友好的。容易导致亿赛通 无法启动 默认开启了内核自动更新所以我们关闭自 动内核更新。 1.禁止更新执行 sudo apt-mark hold linux-image-generic linux-headers-generic…...

【C++】——入门基础(一)

前言 这是我C的第一篇文章&#xff0c;如果你想从事入门C行业&#xff0c;可以看看这幅漫画 当然&#xff0c;这只是一个玩笑&#xff0c;但如过你真的想学习C&#xff0c;和我一起学习吧 本人其他博客;恋风诗 本文出现的代码见gitte:mozhengy 这里写目录标题 前言1. C发展历史…...

[原创](现代Delphi 12指南):[macOS 64bit App开发]:在Mac App Store外创建、部署与公证

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...

美乐迪电玩客户端打包与资源替换实战教程

本篇为《美乐迪电玩全套系统搭建》系列的第二篇&#xff0c;聚焦客户端层的实战操作&#xff0c;主要面向前端开发者、美术资源替换人员及整体项目的打包部署人员。教程将涵盖安卓客户端的构建、资源目录说明、动画素材替换方式及常见适配问题处理等。 一、客户端项目结构说明&…...

多态以及多态底层的实现原理

本章目标 1.多态的概念 2.多态的定义实现 3.虚函数 4.多态的原理 1.多态的概念 多态作为面对三大特性之一,它所指代的和它的名字一样,多种形态.但是这个多种形态更多的指代是函数的多种形态. 多态分为静态多态和动态多态. 静态多态在前面已经学习过了,就是函数重载以及模板,…...

描述城市出行需求模式的复杂网络视角:大规模起点-目的地需求网络的图论分析

描述城市出行需求模式的复杂网络视角&#xff1a;大规模起点-目的地需求网络的图论分析 原文&#xff1a; A complex network perspective for characterizing urban travel demand patterns: graph theoretical analysis of large-scale origin–destination demand networks…...

文件操作函数

本文是小编巩固自身而作&#xff0c;如有错误&#xff0c;欢迎指出&#xff01; 1.使用文件的原因 我们编写的程序都是有生命周期的&#xff0c;储存在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就会丢失&#xff0c;等程序再次运行&#xf…...

Java高频面试之并发编程-05

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;线程有哪些调度方法&#xff1f; 在Java中&#xff0c;线程的调用方法主要包括以下几种方式&#xff0c;每种方式适用于…...

LeetCode 1292 元素和小于等于阈值的正方形的最大边长

最大正方形边长问题详解 一、问题描述 给定一个大小为 mn 的矩阵 mat 和一个整数阈值 threshold&#xff0c;要求返回元素总和小于或等于阈值的正方形区域的最大边长&#xff1b;如果没有这样的正方形区域&#xff0c;则返回 0。 二、解题思路 前缀和矩阵的概念与构建 前缀…...

测试开发 - Java 自动化测试核心函数详解

目录 1. 元素定位 1.1 By.xpath 1.1.1 //* 1.1.2 //[指定节点] 1.1.3 / 1.1.4 /.. 1.1.5 [...] 1.1.6 指定索引获取对应元素 1.2 By.cssSelector 1.2.1 # 1.2.2 . 1.2.3 > 1.2.4 标签名:nth-child(n) 2. 获取元素 2.1 findElement 2.2 findElements 3. 操…...

【HarmonyOS】ArKUI框架

目录 概述 声明式开发范式 基于ArKUI的项目 • 1&#xff0e;创建资源文件 • 2&#xff0e;引用资源 • 3&#xff0e;引用系统资源&#xff1a; • 系统资源有哪些 • 4. 在配置和资源中引用资源 声明式语法 UI描述规范 UI组件概述 组件化 组件渲染控制语法 修改…...

【MQ篇】RabbitMQ之简单模式!

目录 引言一、 初识 RabbitMQ 与工作模式二、 简单模式 (Simple Queue) 详解&#xff1a;最直接的“点对点快递” &#x1f4ee;三、 Java (Spring Boot) 代码实战&#xff1a;让小兔子跑起来&#xff01; &#x1f430;&#x1f3c3;‍♂️四、 深入理解&#xff1a;简单模式的…...

K8S节点出现Evicted状态“被驱逐”

在Kubernetes集群中&#xff0c;Pod状态为“被驱逐&#xff08;evicted&#xff09;”表示Pod无法在当前节点上继续运行&#xff0c;已被集群从节点上移除。 问题分析&#xff1a; 节点磁盘空间不足 &#xff0c;使用df -h查看磁盘使用情况 可以看到根目录 / 已100%满&#x…...

NumPyro:概率编程的现代Python框架深度解析

引言 概率编程作为统计学与机器学习的交叉领域&#xff0c;正在重塑我们构建不确定性模型的方式。在众多概率编程语言&#xff08;PPL&#xff09;中&#xff0c;NumPyro凭借其简洁的语法、强大的性能和与PyTorch生态系统的无缝集成&#xff0c;已经成为研究者和数据科学家的首…...

java进阶之git

git git介绍git常用命令代码回滚操作 git 介绍 工作区 改动&#xff08;增删文件和内容&#xff09;暂存区 输入命令&#xff1a;git add改动的文件名&#xff0c;此次改动就放到了"暂存区“本地仓库 输入命令&#xff1a;git commit 此次修改的描述&#xff0c;此次改动…...

负载阻尼效应及其作用解析

负载阻尼效应是指负载&#xff08;如电路、机械系统或控制系统中连接的设备&#xff09;对系统动态变化&#xff08;如电压波动、机械振动等&#xff09;产生的抑制或衰减作用。 其核心是通过消耗或吸收能量&#xff0c;减少系统中的振荡、波动或瞬态响应&#xff0c;从而提高…...

面向组织的网络安全措施

一、安全措施概述 在一个组织中&#xff0c;技术人员可以利用一系列强大的网络安全工具进行安全检测和防范&#xff0c;以保护组织的网络基础设施、数据和资产免受各种威胁。这些工具通常涵盖了从主动防御、威胁检测、漏洞管理到事件响应和安全分析的各个方面。 以下是一些关…...

Unity 跳转资源商店,并打开特定应用

需求&#xff1a; 打开资源商店&#xff0c;并定位到特定应用. 代码&#xff1a; #if UNITY_ANDROIDApplication.OpenURL("market://details?idcom.tencent.mm"); #elif UNITY_IPHONEApplication.OpenURL(“itms-apps://apps.apple.com/app/id333903271”); #end…...

2025年五大ETL数据集成工具推荐

ETL工具作为打通数据孤岛的核心引擎&#xff0c;直接影响着企业的决策效率与业务敏捷性。本文精选五款实战型ETL解决方案&#xff0c;从零门槛的国产免费工具到国际大厂企业级平台&#xff0c;助您找到最适合的数据集成利器。 一、谷云科技ETLCloud&#xff1a;国产数据集成工…...

基于 PaddleOCR对pdf文件中的文字提取

一、基于 PaddleOCR 提取 PDF 文件中的文字流程 1. 安装必要的依赖库&#xff1a;包括 PaddleOCR 和 PyMuPDF pip install paddlepaddle paddleocr pymupdf 2. 将 PDF 转换为图像&#xff1a;使用 PyMuPDF 将 PDF 的每一页转换为图像 3. 使用 PaddleOCR 进行文字识别&a…...

鸿蒙移动应用开发--渲染控制实验

任务&#xff1a;使用“对象数组”、“ForEach渲染”、“Badge角标组件”、“Grid布局”等相关知识&#xff0c;实现生效抽奖卡案例。如图1所示&#xff1a; 图1 生肖抽奖卡实例图 图1(a)中有6张生肖卡可以抽奖&#xff0c;每抽中一张&#xff0c;会通过弹层显示出来&#xf…...

【漫话机器学习系列】215.处理高度不平衡数据策略(Strategies For Highly Imbalanced Classes)

处理高度不平衡数据的四大策略详解 在机器学习与数据挖掘任务中&#xff0c;“类别不平衡”问题几乎无处不在。无论是信用卡欺诈检测、医疗异常诊断&#xff0c;还是网络攻击识别&#xff0c;正负样本的比例往往严重失衡。比如一个欺诈检测数据集中&#xff0c;可能只有不到 1…...

在离线 Ubuntu 环境下部署双 Neo4j 实例(Prod Dev)

在许多开发和生产场景中&#xff0c;我们可能需要在同一台服务器上运行多个独立的 Neo4j 数据库实例&#xff0c;例如一个用于生产环境 (Prod)&#xff0c;一个用于开发测试环境 (Dev)。本文将详细介绍如何在 离线 的 Ubuntu 服务器上&#xff0c;使用 tar.gz 包部署两个 Neo4j…...

Windows下Golang与Nuxt项目宝塔部署指南

在Windows下将Golang后端和Nuxt前端项目打包&#xff0c;并使用宝塔面板部署的步骤如下 一、Golang后端打包 交叉编译为Linux可执行文件 在Windows PowerShell中执行&#xff1a; powershell复制下载 $env:GOOS "linux" $env:GOARCH "amd64" go build…...

基于贝叶斯优化的Transformer多输入单输出回归预测模型Bayes-Transformer【MATLAB】

Bayes-Transformer 在机器学习和深度学习领域&#xff0c;Transformer模型已经广泛应用于自然语言处理、图像识别、时间序列预测等多个领域。然而&#xff0c;在一些实际应用中&#xff0c;我们面临着如何高效地优化模型超参数的问题。贝叶斯优化&#xff08;Bayesian Optimiz…...

ibus输入法微软词库分享

链接: https://pan.baidu.com/s/1aC-UvV-UDHEpxg5sZcAS2Q?pwddxpq 提取码: dxpq --来自百度网盘超级会员v8的分享 链接: https://pan.baidu.com/s/1aC-UvV-UDHEpxg5sZcAS2Q?pwddxpq 提取码: dxpq --来自百度网盘超级会员v8的分享 # 更改ibus输入法字体大小 sudo apt insta…...

Sharding-JDBC 系列专题 - 第五篇:分布式事务

Sharding-JDBC 系列专题 - 第五篇:分布式事务 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第五篇文章,将深入探讨 分布式事务(Distributed Transactions),包括其概念、支持的事务类型、配置方法、工作原理以及实战…...

力扣每日打卡17 49. 字母异位词分组 (中等)

力扣 49. 字母异位词分组 中等 前言一、题目内容二、解题方法1. 哈希函数2.官方题解2.1 前言2.2 方法一&#xff1a;排序2.2 方法二&#xff1a;计数 前言 这是刷算法题的第十七天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 49. 字母异位词分组 (中等) 一、题目内容 给…...

深入解析C++ STL List:双向链表的特性与高级操作

一、引言 在C STL容器家族中&#xff0c;list作为双向链表容器&#xff0c;具有独特的性能特征。本文将通过完整代码示例&#xff0c;深入剖析链表的核心操作&#xff0c;揭示其底层实现机制&#xff0c;并对比其他容器的适用场景。文章包含4000余字详细解析&#xff0c;适合需…...

在 master 分支上进行了 commit 但还没有 push,怎么安全地切到新分支并保留这些更改

确保你的 commit 确实没有 push&#xff08;否则会覆盖远程分支&#xff09;&#xff1a; git log --oneline # 查看本地 commit git log --oneline origin/master # 查看远程 master 的 commit 确保你的 commit 只存在于本地&#xff0c;远程 origin/master 没有…...

spark jar依赖顺序

1. 执行顺序 spark-submit --config "spark.{driver/executor}.extraClassPathsomeJar"提交的依赖包SystemClasspath – Spark安装时候提供的依赖包spark-submit --jars 提交的依赖包 2. 依赖解释 提交任务时指定的依赖 Spark-submit --config "spark.{drive…...

docker 国内源和常用命令

Ubuntu | Docker Docs 参考docker官方安装docker # Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt…...

【目标检测】对YOLO系列发展的简单理解

目录 1.YOLOv12.YOLOv23.YOLOv34.YOLOv45.YOLOv66.YOLOv77.YOLOv9 YOLO系列文章汇总&#xff1a; 【论文#目标检测】You Only Look Once: Unified, Real-Time Object Detection 【论文#目标检测】YOLO9000: Better, Faster, Stronger 【论文#目标检测】YOLOv3: An Incremental …...

C# AppContext.BaseDirectory 应用程序的启动目录

Application.StartupPath定义与用途局限性示例 Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)定义与用途局限性示例 Directory.GetCurrentDirectory()定义与用途局限性示例 关键区别总结推荐使用场景需要应用程序安装目录需要动态工作目录插件或模块化应用…...

Sentinel数据S2_SR_HARMONIZED连续云掩膜+中位数合成

在GEE中实现时&#xff0c;发现简单的QA60是无法去云的&#xff0c;最近S2地表反射率数据集又进行了更新&#xff0c;原有的属性集也进行了变化&#xff0c;现在的SR数据集名称是“S2_SR_HARMONIZED”。那么&#xff1a; 要想得到研究区无云的图像&#xff0c;可以参考执行以下…...

探索Cangjie Magic:仓颉编程语言原生的LLM Agent开发新范式

引言&#xff1a;智能体开发的革命性突破 2025年3月&#xff0c;仓颉社区开源了Cangjie Magic——这是首个基于仓颉编程语言原生构建的LLM Agent开发平台&#xff0c;标志着智能体开发领域的一次重大突破。作为一名长期关注AI发展的技术爱好者&#xff0c;我有幸第一时间体验了…...

css三大特性

css三大特性&#xff1a;层叠性 继承性 优先性 一.层叠性 二.继承性 子标签会继承父标签的某些样式 恰当地使用继承性&#xff0c;减少代码复杂性子元素会继承父元素地某些样式(text-&#xff0c;font-&#xff0c;line-这些元素开头的可以继承&#xff0c;以及color属性) 2…...

Centos7安装Jenkins(图文教程)

本章教程,主要记录在centos7安装部署Jenkins 的详细过程。 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 一、基础环境安装 内存大小要求:256 MB 内存以上 硬盘大小要求:10 GB 及以上 安装基础java环境:Java 17 ( JRE 或者 JDK 都可…...

Hyper-V 管理工具

什么是 Hyper-V Microsoft Hyper-V是一个虚拟化平台&#xff0c;可在Windows客户端和服务器上创建并运行虚拟计算机。操作系统&#xff08;OS&#xff09;被称为“监管程序”&#xff08;supervisor&#xff09;&#xff0c;因为它负责为程序分配物理资源。在虚拟环境中&#…...

小雨滴的奇妙旅行

以下是基于原稿的优化版本&#xff0c;在保留童趣的基础上&#xff0c;进一步贴近5岁孩子的语言习惯和表演需求。修改处用&#xff08;优化&#xff09;标注&#xff0c;供参考&#xff1a; 《小雨滴的奇妙旅行》&#xff08;优化标题&#xff0c;更易记忆&#xff09; “滴答…...

极狐GitLab 权限和角色如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 权限和角色 (BASIC ALL) 将用户添加到项目或群组时&#xff0c;您可以为他们分配角色。该角色决定他们在极狐GitLab 中可以执…...