python基础入门:3.3序列通用操作
Python序列操作终极指南:解锁数据处理的核心技能

# 快速导航
sequence_types = ["列表", "元组", "字符串", "字节序列"]
一、核心操作三位一体
1. 索引与切片体系
# 通用索引规则
data = ["A", "B", "C", "D", "E"]
print(data[2]) # 正向索引 → C
print(data[-3]) # 反向索引 → C# 高级切片技巧
text = "Python"
print(text[1:4]) # 基础切片 → yth
print(text[::2]) # 步长切片 → Pto
print(text[::-1]) # 反转序列 → nohtyP# 多维切片应用
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]
print(matrix[1:3][0][1:]) # 获取[5,6]和[8,9] → [5,6]
切片参数解析表:
| 参数 | 说明 | 示例 | 结果 |
|---|---|---|---|
| start | 起始位置(包含) | [2:] | 从索引2开始 |
| end | 结束位置(不包含) | [:4] | 到索引3结束 |
| step | 步长(可负) | [::-2] | 反向步进 |
2. 迭代的统一法则
# 通用迭代协议
for char in "Hello": # 字符串迭代print(char, end=" ") # H e l l o# 反向迭代技巧
numbers = (10, 20, 30, 40)
for num in reversed(numbers):print(num) # 40 30 20 10# 自定义可迭代对象
class CountDown:def __init__(self, start):self.start = startdef __iter__(self):return (x for x in range(self.start, -1, -1))for num in CountDown(5):print(num) # 5 4 3 2 1 0
二、内置函数威力全开
1. 基础函数应用
# 长度检测
mixed = [True, None, 3.14, "text"]
print(len(mixed)) # 4# 极值运算
temperatures = [-5, 12, 8, 21, -3]
print(max(temperatures)) # 21
print(min(temperatures)) # -5# 空值处理
empty = []
print(sum(empty, start=0)) # 0
2. 进阶统计技巧
# 复合数据类型处理
grades = [{"name": "Alice", "score": 88},{"name": "Bob", "score": 92},{"name": "Charlie", "score": 85}
]# 获取最高分记录
best = max(grades, key=lambda x: x["score"])
print(f"最高分:{best['name']} {best['score']}分")# 自定义比较函数
words = ["apple", "banana", "cherry"]
longest = max(words, key=len) # banana
函数性能对比:
| 操作 | 时间复杂度 | 适用场景 |
|---|---|---|
| len() | O(1) | 所有序列类型 |
| max/min() | O(n) | 可比较元素的序列 |
| sum() | O(n) | 数值型序列 |
三、迭代神器深度解析
1. enumerate实战
# 基础用法
colors = ["red", "green", "blue"]
for index, color in enumerate(colors, start=1):print(f"第{index}个颜色是{color}")# 创建字典映射
position_map = {item: idx for idx, item in enumerate("ABCDE", 1)}
# {'A':1, 'B':2, ...}# 并行修改列表
data = [10, 20, 30]
for i, val in enumerate(data):data[i] = val * 2 # [20,40,60]
2. zip魔法应用
# 基础合并
names = ["Alice", "Bob"]
scores = [88, 92]
combined = list(zip(names, scores)) # [('Alice',88), ('Bob',92)]# 矩阵转置
matrix = [[1,2], [3,4], [5,6]]
transposed = list(zip(*matrix)) # [(1,3,5), (2,4,6)]# 不等长序列处理
from itertools import zip_longest
nums = [1,2,3]
letters = ['a','b']
print(list(zip_longest(nums, letters, fillvalue='-')))
# [(1,'a'), (2,'b'), (3,'-')]
迭代工具对比表:
| 特性 | enumerate | zip |
|---|---|---|
| 主要功能 | 添加索引计数器 | 并行迭代多个序列 |
| 典型应用场景 | 需要索引的循环 | 合并关联数据 |
| 优势 | 避免手动维护索引 | 简化多序列处理 |
四、性能优化与最佳实践
1. 内存管理技巧
# 切片的内存特性
original = [1,2,3,4]
sliced = original[1:3] # 创建新列表[2,3]
original[1] = 99
print(sliced) # 仍为[2,3]# 生成器表达式优化
big_data = (x**2 for x in range(1000000)) # 内存友好
2. 类型选择策略
# 不同序列类型对比
from sys import getsizeofdata_list = [1,2,3]
data_tuple = (1,2,3)
data_str = "123"print(f"列表内存:{getsizeof(data_list)}字节")
print(f"元组内存:{getsizeof(data_tuple)}字节")
print(f"字符串内存:{getsizeof(data_str)}字节")
序列类型选择指南:
- 需要修改 → 列表
- 只读数据 → 元组
- 文本处理 → 字符串
- 二进制数据 → bytes
扩展思考:
- 如何实现自定义序列类型(实现
__getitem__和__len__) - 切片操作在Pandas DataFrame中的扩展应用
- 使用itertools模块处理复杂迭代逻辑
- 生成器表达式与列表推导式的性能差异
下节预告:迭代器协议与生成器原理——掌握Python的惰性计算艺术
相关文章:
python基础入门:3.3序列通用操作
Python序列操作终极指南:解锁数据处理的核心技能 # 快速导航 sequence_types ["列表", "元组", "字符串", "字节序列"]一、核心操作三位一体 1. 索引与切片体系 # 通用索引规则 data ["A", "B", &…...
Linux | 自动化构建 —— make / Makefile
文章目录 自动化构建-make/Makefile一、make 工具概述二、Makefile 基本结构三、 Makefile和make的基本使用3.1最基本的gcc编译:3.2make执行Makefile文件3.3.PHONY伪目标 四、Makefile拓展4.1直接根据文件名编写Makefile4.2变量的使用4.3Makefile的适度扩展语法&…...
quartus24.1版本子模块因时钟问题无法综合通过,FPGA过OOC问题复盘
因为只负责一个子模块,所以需要单独对该子模块进行综合和过OOC,这时候已经有一些加虚拟pin文件,敲命令让子模块能过OOC的方法。但这个方法的前提是先过综合,然后再敲命令让虚拟管脚命令成功,最终可以过OOC。 今天负责…...
shell脚本控制——处理信号
Linux利用信号与系统中的进程进行通信。你可以通过对脚本进行编程,使其在收到特定信号时执行某些命令,从而控制shell脚本的操作。 1.重温Linux信号 Linux系统和应用程序可以产生超过30个信号。下表列出了在shell脚本编程时会遇到的最常见的Linux系统信…...
【个人开发】macbook m1 Lora微调qwen大模型
本项目参考网上各类教程整理而成,为个人学习记录。 项目github源码地址:Lora微调大模型 项目中微调模型为:qwen/Qwen1.5-4B-Chat。 去年新发布的Qwen/Qwen2.5-3B-Instruct同样也适用。 微调步骤 step0: 环境准备 conda create --name fin…...
电脑开机提示按f1原因分析及终极解决方法来了
经常有网友问到一个问题,我电脑开机后提示按f1怎么解决?不管理是台式电脑,还是笔记本,都有可能会遇到开机需要按F1,才能进入系统的问题,引起这个问题的原因比较多,今天小编在这里给大家列举了比…...
2025华为OD机试真题最新题库 (B+C+D+E卷) + 在线OJ在线刷题使用说明(C++、Java、Python合集)(正在更新E卷,目前已收录581道)
2024年8月份,华为已经开始使用E卷题库,题目和往期一样,旧题加新题的组合,有题目第一时间更新,大家可以跟着继续学习,目前使用复用题较多,可在OJ上直接找到对应的E卷学习,可以放心学习…...
《手札·避坑篇》2025年传统制造业企业数字化转型指南
一、引言 在数字化浪潮的推动下,传统制造业企业正加速向智能化、数字化转型。开源软件技术与制造MES(制造执行系统)产品的结合,为企业提供了高效、灵活且低成本的转型路径。本指南旨在为传统制造业企业的信息化负责人提供一套完整的数字化转型方案,助力企业实现高效、智能…...
Qt+海康虚拟相机的调试
做机器视觉项目的时候,在没有相机或需要把现场采集的图片在本地跑一下做测试时,可以使用海康的虚拟相机调试。以下是设置步骤: 1.安装好海康MVS软件,在菜单栏->工具选择虚拟相机工具,如下图: 2.打开虚拟…...
《Origin画百图》之边际分布曲线图
《Origin画百图》第六集——边际分布曲线图 入门操作可看《30秒,带你入门Origin》 边际分布曲线图,其中包含散点图形,而在图的边际有着分布曲线图。在比较数据以查看多个变量之间是否存在关系时非常有用。 1.数据准备:为多列XY数…...
如何提升自己的能力
提高自身能力是一个长期且综合的过程,需要从多个方面进行努力和持续的学习,以下是一些有效的方法: 明确目标与规划 确定目标:首先要明确自己想要提高哪些方面的能力,例如沟通能力、领导力、专业技能等,并根…...
【ORACLE】这个‘‘和null不等价的场景,deepseek你怎么看?
【ORACLE】一处’和null不等价的场景–to_char(number,varchar2) 背景 最近在做一个国产数据库替代项目,要求将ORACLE迁移到一个openGauss系数据库,迁移后,执行一个存储过程时,发现国产库的执行结果和ORACLE不一致, …...
安全知识之网络扫描器概念与相关技术
网络安全扫描器简介 迅速发展的Internet给人们的生活、工作带来了巨大的方便,但同时,也带来了一些不容忽视的问题,网络信息的安全保密问题就是其中之一。 网络的开放性以及黑客的攻击是造成网络不安全的主要原因。科学家在设计Internet之初就…...
Vim跳转文件及文件行结束符EOL
跳转文件 gf 从当前窗口打开那个文件的内容,操作方式:让光标停在文件名上,输入gf。 Ctrlo 从打开的文件返回之前的窗口 Ctrlwf 可以在分割的窗口打开跳转的文件,不过在我的实验不是次次都成功。 统一行尾格式 文本文件里存放的…...
Termux安装ssh实现电脑ssh
Termux下载 点击下载 在 Termux 中安装并使用 SSH,按照以下步骤操作: 1. 更新软件包列表 pkg update && pkg upgrade2. 安装 OpenSSH pkg install openssh3. 设置 SSH 密码(必须,否则无法使用 SSH 服务器)…...
DeepSeek大模型介绍、本地化部署与使用!【AI大模型】
一、DeepSeek 是什么? 1.技术定位 专注大模型与AGI研究,开发高性能基座模型(如 DeepSeek LLM 系列),支持长文本、多模态、代码生成等复杂任务。 提供开源模型(如 DeepSeek-MoE、DeepSeek-V2)…...
Axios 的原理
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
Gitlab中如何进行仓库迁移
需求:之前有一个自己维护的新仓库A,现在需要将这个仓库提交并覆盖另一个旧的仓库B,需要保留A中所有的commit信息。 1.方法一:将原有仓库A导出后再导入到新的仓库B中 适用场景:新的仓库B是一个待建仓库,相当…...
Android的MQTT客户端实现
在 Android 平台上实现 MQTT 客户端的完整技术方案,涵盖基础实现、安全连接、性能优化和最佳实践: 一、技术选型与依赖配置 推荐库 Eclipse Paho Android Service(官方维护,支持后台运行) gradle 复制 // build.gradl…...
Centos挂载镜像制作本地yum源,并补装图形界面
内网环境centos7.9安装图形页面内网环境制作本地yum源 上传镜像到服务器目录 创建目录并挂载镜像 #创建目录 cd /mnt/ mkdir iso#挂载 mount -o loop ./CentOS-7-x86_64-DVD-2009.iso ./iso #前面镜像所在目录,后面所挂载得目录#检查 [rootlocalhost mnt]# df -h…...
Thread类以及常见方法
Thread类是JVM用来管理线程的一个类,每个线程都有一个唯一的Thread对象与之关联。 多一个线程,就多一条执行流,每个执行流也要一个对象来描述,而Thread类的对象就是用来描述一个线程的执行流,JVM 会将这些 Thread 对象…...
【蓝桥杯—单片机】第十一届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记
第十一届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线 建立模板明确设计要求和初始状态显示功能部分数据界面第一部分第二部分第三部分调试时发现的问题 参数设置界面第一部分第二部分和第四部分第三部分和第五部分 按键功…...
【原创】Android Studio Ladybug 中Gradle配置
使用Android Studio创建项目后,由于需要下载的一下文件在国外,加上网速的问题,以及防火墙的问题,不少文件难以下载。常常导致项目创建后,要等很长时间,各种折腾,结果一个demo都跑不起来。 经过…...
CLion2024.3.2版中引入vector头文件报错
报错如下: 在MacBook端的CLion中引入#include <vector>报 vector file not found(引入map、set等也看参考此方案),首先可以在Settings -> Build,Execution,Deployment -> Toolchains中修改C compiler和C compiler的路…...
自动化测试工具:selenium
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Selenium是一个用于Web应用程序测试的工具。是一个开源的Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键…...
MR30分布式IO模块:驱动智能制造工厂的工业互联与高效控制新范式
在工业4.0与智能制造浪潮的推动下,传统制造业正经历着从“机械驱动”向“数据驱动”的深刻转型。作为工业数据连接领域的领军者,明达技术凭借其自主研发的MR30分布式IO模块,以创新的技术架构与卓越的性能表现,为全球制造企业构建了…...
计算机领域QPM、TPM分别是什么并发指标,还有其他类似指标吗?
在计算机领域,QPM和TPM是两种不同的并发指标,它们分别用于衡量系统处理请求的能力和吞吐量。 QPM(每分钟请求数) QPM(Query Per Minute)表示每分钟系统能够处理的请求数量。它通常用于衡量系统在单位时间…...
Python截图轻量化工具
这是用Python做到截图工具,不过由于使用了ctypes调用了Windows的API, 同时访问了Windows中"C:/Windows/Cursors/"中的.cur光标样式文件, 这个工具只适用于Windows环境; 如果要提升其跨平台性的话,需要考虑替换ctypes的一些专属于W…...
Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)
一、协程 1.1、协程 协程,Coroutines,也叫作纤程(Fiber) 协程,全称是“协同程序”,用来实现任务协作。是一种在线程中,比线程更加轻量级的存在,由程序员自己写程序来管理。 当出现IO阻塞时,…...
DeepSeek使用技巧大全(含本地部署教程)
在人工智能技术日新月异的今天,DeepSeek 作为一款极具创新性和实用性的 AI,在众多同类产品中崭露头角,凭借其卓越的性能和丰富的功能,吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能,它基于先进…...
