• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

关闭

返回栏目

关闭

返回python栏目

37 - 自带方法 - data[ ] - 切片

作者:

贺及楼

成为作者

更新日期:2024-12-27 14:12:52

data[ ] - 切片

切片简介

Python 中的切片是一种获取序列(如列表、元组、字符串)部分元素的简洁方式。通过指定起始、结束和步长索引,切片允许你访问序列的子集。它非常强大,可以用于修改序列,如在列表中插入、删除或替换元素。切片还支持负索引和步长,使得可以从序列的末尾开始访问元素,或跳过某些元素。这一功能在数据处理、子序列提取和算法实现中非常有用。

python得切片功能非常实用,能够用简短的方式对字符串、列表进行截取操作
以下是python切片的使用例子汇总,方便大家学习查阅

切片

  1. 格式:
  2. 数据[开始索引:结束索引:步长]
  3. object[取:不取:方向]
  4. object[start_index:end_index:step]
  5. object[a:b:c]
  6. object[a:b]
  7. object[a]

object可以是列表、字符串、元组
a、b可以是正整数(正索引) 或者负整数(负索引)
step:正负数均可,其绝对值大小决定了切取数据时的“步长”,默认为1
正表示“从左往右”取值
负表示“从右往左”取值

  1. a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  2. b = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  3. c = "0123456789"
0 1 2 3 4 5 6 7 8 9
正索引 0 1 2 3 4 5 6 7 8 9
负索引 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

正方向切片:

代码 方向 a列表效果 b元组效果 c字符串效果 解释
a[0] —> 0 (0) "0" 单切片
a[-4] —> 6 (6) "6" 单切片
a[:3] —> [0,1,2] (0,1,2) "012" 前切片,前3个
a[-3:] —> [7,8,9] (7,8,9) "789" 后切片,后3个
a[:] —> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) "0123456789" 全部切片
a[::] —> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) "0123456789" 全部切片
a[6:] —> [6, 7, 8, 9] (6, 7, 8, 9) "6789" 从start_index=6开始,到“终点”
a[1:6] —> [1, 2, 3, 4, 5] (1, 2, 3, 4, 5) "12345" start_index=1到end_index=6
a[1:-6] —> [1, 2, 3] (1, 2, 3) "123" /
a[-6:] —> [4, 5, 6, 7, 8, 9] (4, 5, 6, 7, 8, 9) "456789" 从start_index=-6开始,到“终点”
a[-6:-1] —> [4, 5, 6, 7, 8] (4, 5, 6, 7, 8) ``"45678" /
a[::2] —> [0, 2, 4, 6, 8] (0, 2, 4, 6, 8) "02468" 跳切
a[::3] —> [0, 3, 6, 9] (0, 3, 6, 9) "0369" 跳切
a[6:2] —> [] () "" 没取到数据
a[-1:-6] —> [] () "" 没取到数据
a[-1:6] —> [] () "" 没取到数据
a[:6] —> [0, 1, 2, 3, 4, 5] (0, 1, 2, 3, 4, 5) "012345" 从“起点”值0开始,到end_index=6
a[:-6] —> [0, 1, 2, 3] (0, 1, 2, 3) "0123" /

反方向切片:

代码 方向 a列表效果 b元祖效果 c字符串效果 解释
a[6::-1] <— [6, 5, 4, 3, 2, 1, 0] (6, 5, 4, 3, 2, 1, 0) "6543210" 从start_index=6开始,到“起点”
a[-1:-6:-1] <— [9, 8, 7, 6, 5] (9, 8, 7, 6, 5) "98765" /
a[-6::-1] <— [4, 3, 2, 1, 0] (4, 3, 2, 1, 0) "43210" 从start_index=-6开始,到“起点”
a[-1:6:-1] <— [9, 8, 7] (9, 8, 7) "987" /
a[:-6:-1] <— [9, 8, 7, 6, 5] (9, 8, 7, 6, 5) "98765" 从“终点”,到end_index=-6
a[:6:-1] <— [9, 8, 7] [9, 8, 7) "987" 从“终点”值9开始,到end_index=6
a[::-1] <— [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (9, 8, 7, 6, 5, 4, 3, 2, 1, 0) "9876543210" 倒序
a[1:6:-1] <— [] () "" 没取到数据
a[1:-6:-1] <— [] () "" 没取到数据

多层切片操作

  1. a[:8][2:5][-1:]
  2. [4]

python 切片

  1. 相当于:
  2. a[:8] = [0, 1, 2, 3, 4, 5, 6, 7]
  3. a[:8][2:5] = [2, 3, 4]
  4. a[:8][2:5][-1:] = [4]

python 切片
理论上可无限次多层切片操作,只要上一次返回的是非空可切片对象即可。

切片操作的三个参数可以用表达式 + - * /

  1. a[2+1:3*2:1]
  2. [3, 4, 5]
  3. ## 即:a[2+1:3*2:1] = a[3:6:1]

python切片表达式

slice() 函数实现切片

  1. class slice(stop)
  2. class slice(start, stop[, step])
  3. 参数说明:
  4. start -- 起始位置
  5. stop -- 结束位置
  6. step -- 间距
  7. >>>myslice = slice(5) # 设置截取5个元素的切片
  8. >>> myslice
  9. slice(None, 5, None)
  10. >>> arr = range(10)
  11. >>> arr
  12. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  13. >>> arr[myslice] # 截取 5 个元素
  14. [0, 1, 2, 3, 4]