负数下标不越界条件是:i 满足 -len(seq) ≤ i
索引访问时负数下标怎么算才不越界
Python 序列(如
list、str、tuple)支持从 0 开始的正向索引,也支持从 -1 开始的反向索引。seq[-1]指最后一个元素,seq[-len(seq)]等价于seq[0]。越界判断很简单:只要i满足-len(seq) ,就不会报IndexError。常见错误是误以为
seq[-0]是倒数第一个——其实-0就是0,它取的是首元素。另外,对空序列[]做任何索引(包括[0]或[-1])都会直接抛出IndexError: list index out of range。切片
[start:end:step]的边界行为和默认值切片不会报索引错误,超出范围会自动截断。比如
[1,2,3][5:10]返回空列表[],"abc"[1:100]返回"bc"。默认值为:start=0(正向)、end=len(seq)、step=1;当step为负时(如[::-1]),start默认变成-1,end默认变成-(len(seq)+1),所以[::-1]才能完整反转。
[1,2,3,4][1:3]→[2,3](左闭右开,不含end)[1,2,3,4][1:10:2]→[2,4](超出end自动停)"hello"[::-2]→"olh"(从末尾开始,隔一个取一个)相加与相乘只允许同类型序列参与
+要求左右操作数类型一致:[1,2] + (3,4)报TypeError;"a" + ["b"]也不行。相乘是「重复拼接」,3 * [1,2]得[1,2,1,2,1,2],但[1,2] * 3.5会报错——右操作数必须是整数(int),浮点数或字符串都不行。立即学习“Python免费学习笔记(深入)”;
注意:
*=是就地操作,对可变序列(如list)会修改原对象;而+和*总是返回新对象。
in和not in成员检查的性能与陷阱
in对list/tuple是 O(n) 线性扫描,大数据量时很慢;对str是优化过的子串搜索(仍可能较慢);对set或dict键才是平均 O(1)。别在循环里反复写if x in my_list:,应提前转成set。容易忽略的点:
"" in "abc"返回True(空字符串是任意字符串的子串);None in [None, 1]没问题,但float("nan") in [float("nan")]是False,因为 NaN 不等于自身。成员检查不触发自定义
__eq__以外的逻辑,也不会调用__contains__以外的方法——除非类显式实现了它。
0
0
相关文章
如何在Python中高效搜索文本文件中的多个字符串并在CSV中定位并输出匹配行
如何对 Pandas DataFrame 中数组型列的每行取前 N 个元素
如何在 VSCode 中同时支持 pytest 覆盖率报告与断点调试
如何在Python中高效搜索文本文件中的多个字符串并匹配CSV文件的对应行
如何在Python中高效搜索文本文件中的多个字符串并匹配CSV行
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。
89
2026.02.02
本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。
24
2026.02.02
本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。
11
2026.02.02
本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。
4
2026.02.02
本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。
5
2026.02.02
热门下载
相关下载
精品课程





