📌 索引:数据的“精准导航仪”
索引是Python中访问序列元素(字符串、列表、元组等)的数字编号系统,就像图书馆里每本书的索书号。
一、索引:两种计数方式
正向索引(从左到右)
text = "Python"# 元素: P y t h o n# 索引: 0 1 2 3 4 5print(text[0]) # P - 第一个字符print(text[3]) # h - 第四个字符
反向索引(从右到左)
text = "Python"# 元素: P y t h o n# 索引:-6 -5 -4 -3 -2 -1print(text[-1]) # n - 最后一个字符print(text[-3]) # h - 倒数第三个字符
二、切片
🎯 核心概念:左闭右开原则
最重要的规则:切片 [start:end] 包含 start,不包含 end!
s = "0123456789"# 直观理解:方括号代表取值的边界# [0:5] 就像用剪刀在 0 和 5 之间剪开# 0↓ 1 2 3 4 5↓ 6 7 8 9# | |# 包含 不包含print(s[0:5]) # "01234" (只有0-4,没有5!)
2. 切片参数详解表
# 完整切片语法:s[start:stop:step]# 参数含义:# start: 起始位置(包含) - 默认0# stop: 结束位置(不包含)- 默认len(s)# step: 步长(正负控制方向)- 默认1s = "ABCDEFGHIJ"# 不同组合效果print("原字符串:", s)print("s[2:6] ->", s[2:6]) # CDEF (索引2-5)print("s[:5] ->", s[:5]) # ABCDE (从头到索引4)print("s[5:] ->", s[5:]) # FGHIJ (索引5到末尾)print("s[::2] ->", s[::2]) # ACEGI (隔一个取)print("s[1::2] ->", s[1::2]) # BDFHJ (从索引1开始隔一个取)print("s[::-1] ->", s[::-1]) # JIHGFEDCBA (反转)print("s[-3:-1] ->", s[-3:-1]) # HI (倒数第3、2个)print("s[-1:-4:-1]->", s[-1:-4:-1]) # JIH (反向切片)
📝 总结表格
| | | | |
|---|
| 正向索引 | s[n] | "Python"[2] | 't' | |
| 反向索引 | s[-n] | "Python"[-2] | 'o' | |
| 基本切片 | s[start:end] | "Python"[2:5] | 'tho' | |
| 省略开始 | s[:end] | "Python"[:4] | 'Pyth' | |
| 省略结束 | s[start:] | "Python"[2:] | 'thon' | |
| 复制全部 | s[:] | "Python"[:] | 'Python' | |
| 带步长 | s[::step] | "Python"[::2] | 'Pto' | |
| 反向步长 | s[::-1] | "Python"[::-1] | 'nohtyP' | |