python基础入门:3.3序列通用操作

news2025/3/18 13:03:11

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 = start
      
    def __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,'-')]

迭代工具对比表

特性enumeratezip
主要功能添加索引计数器并行迭代多个序列
典型应用场景需要索引的循环合并关联数据
优势避免手动维护索引简化多序列处理

四、性能优化与最佳实践

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 getsizeof

data_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)}字节")

序列类型选择指南

  1. 需要修改 → 列表
  2. 只读数据 → 元组
  3. 文本处理 → 字符串
  4. 二进制数据 → bytes

扩展思考

  • 如何实现自定义序列类型(实现__getitem____len__
  • 切片操作在Pandas DataFrame中的扩展应用
  • 使用itertools模块处理复杂迭代逻辑
  • 生成器表达式与列表推导式的性能差异

下节预告:迭代器协议与生成器原理——掌握Python的惰性计算艺术

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

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

相关文章

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的适度扩展语法&…

【个人开发】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卷学习,可以放心学习…

Qt+海康虚拟相机的调试

做机器视觉项目的时候,在没有相机或需要把现场采集的图片在本地跑一下做测试时,可以使用海康的虚拟相机调试。以下是设置步骤: 1.安装好海康MVS软件,在菜单栏->工具选择虚拟相机工具,如下图: 2.打开虚拟…

《Origin画百图》之边际分布曲线图

《Origin画百图》第六集——边际分布曲线图 入门操作可看《30秒,带你入门Origin》 边际分布曲线图,其中包含散点图形,而在图的边际有着分布曲线图。在比较数据以查看多个变量之间是否存在关系时非常有用。 1.数据准备:为多列XY数…

如何提升自己的能力

提高自身能力是一个长期且综合的过程,需要从多个方面进行努力和持续的学习,以下是一些有效的方法: 明确目标与规划 确定目标:首先要明确自己想要提高哪些方面的能力,例如沟通能力、领导力、专业技能等,并根…

Vim跳转文件及文件行结束符EOL

跳转文件 gf 从当前窗口打开那个文件的内容,操作方式:让光标停在文件名上,输入gf。 Ctrlo 从打开的文件返回之前的窗口 Ctrlwf 可以在分割的窗口打开跳转的文件,不过在我的实验不是次次都成功。 统一行尾格式 文本文件里存放的…

Termux安装ssh实现电脑ssh

Termux下载 点击下载 在 Termux 中安装并使用 SSH,按照以下步骤操作: 1. 更新软件包列表 pkg update && pkg upgrade2. 安装 OpenSSH pkg install openssh3. 设置 SSH 密码(必须,否则无法使用 SSH 服务器&#xff09…

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是一个待建仓库,相当…

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 对象…

【蓝桥杯—单片机】第十一届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记

第十一届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线 建立模板明确设计要求和初始状态显示功能部分数据界面第一部分第二部分第三部分调试时发现的问题 参数设置界面第一部分第二部分和第四部分第三部分和第五部分 按键功…

CLion2024.3.2版中引入vector头文件报错

报错如下&#xff1a; 在MacBook端的CLion中引入#include <vector>报 vector file not found&#xff08;引入map、set等也看参考此方案&#xff09;&#xff0c;首先可以在Settings -> Build,Execution,Deployment -> Toolchains中修改C compiler和C compiler的路…

自动化测试工具:selenium

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Selenium是一个用于Web应用程序测试的工具。是一个开源的Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的&#xff0c;类型像我们玩游戏用的按键…

MR30分布式IO模块:驱动智能制造工厂的工业互联与高效控制新范式

在工业4.0与智能制造浪潮的推动下&#xff0c;传统制造业正经历着从“机械驱动”向“数据驱动”的深刻转型。作为工业数据连接领域的领军者&#xff0c;明达技术凭借其自主研发的MR30分布式IO模块&#xff0c;以创新的技术架构与卓越的性能表现&#xff0c;为全球制造企业构建了…

计算机领域QPM、TPM分别是什么并发指标,还有其他类似指标吗?

在计算机领域&#xff0c;QPM和TPM是两种不同的并发指标&#xff0c;它们分别用于衡量系统处理请求的能力和吞吐量。 QPM&#xff08;每分钟请求数&#xff09; QPM&#xff08;Query Per Minute&#xff09;表示每分钟系统能够处理的请求数量。它通常用于衡量系统在单位时间…

Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)

一、协程 1.1、协程 协程&#xff0c;Coroutines&#xff0c;也叫作纤程(Fiber) 协程&#xff0c;全称是“协同程序”&#xff0c;用来实现任务协作。是一种在线程中&#xff0c;比线程更加轻量级的存在&#xff0c;由程序员自己写程序来管理。 当出现IO阻塞时&#xff0c;…