切片

本文详细介绍了Python中的切片操作,包括切片的定义、语法、示例以及切片赋值的规则和应用场景。切片允许通过指定索引区间访问线性结构的数据,并支持正负索引和步长设置。切片赋值则直接在原对象上修改,要求等号两边的元素数量和步长匹配。常见线性结构如列表、元组、字符串等都支持切片操作。
摘要由CSDN通过智能技术生成

切片

切片的定义:
通过索引区间访问线性结构的一段数据。实际就是通过指定索引截取指定数据

  • 语法:【sequence[start:stop:step]–> newsequence】
    • sequence:线性结构的可迭代对象
    • start: 起始索引
    • stop: 结束索引
    • step: 步长默认为1,可正,可负
    • 返回newsequence:返回一个新的可迭代的线性结构对象
      切片支持正负索引,超过上边界(右边界),就取到末尾;超过下边界(左边界)从开头开始取
    • start一定要在stop左边
    • [:]表示从头至尾,全部元素被取出,等效于copy()方法
  • 示例1:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
arr1 = arr[1:6:2]  #表示将下标为1的位置开始,到下标为6的位置结束(不包含6所在下标位置),步长为2,拷贝一个新列表给arr1 #会返回一个新列表
print("arr1 = {}".format(arr1))

slice01

  • 示例2:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
arr2 = arr[:]  #拷贝整个arr列表赋值给arr2.相当于copy方法
print("arr2 = {}".format(arr2))

slice02

  • 示例3:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
arr3 = arr[::-1]  #将arr列表中,从-1,到-len(arr)-1 步长为-1 ,拷贝一个新列表给arr3 等价于 arr[-1:-len(arr)-1:-1]
print("arr3 = {}".format(arr3))

slice03

  • 示例4:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
arr4 = arr[:-3] #将arr列表中,取值索引范围是[0,-3)区间内的值拷贝给arr4
print("arr4 = {}".format(arr4))

slice04

  • 示例5:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
arr5 = arr[-5::-1] #将arr列表中[-5,-len(arr)-1)步长为-1 反向拷贝一个新列表到arr5中
print("arr5 = {}".format(arr5))

slice05

  • 示例6:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
arr6 = arr[-5:-1]  ##将arr列表中[-5,-1)步长为1 拷贝一个新列表到arr6中 
print("arr6 = {}".format(arr6))

slice06

切片赋值

  • 切片操作写在等号左边,被插入值(可跌打对象)写在等号右边
  • 语法:【sequence1[start:stop:step] = sequence2[start:stop:step]直接在sequence1上修改】
    • sequence1,sequence2 线性结构的可迭代对象
    • start 替换的起始位置
    • stop 替换的结束位置
    • step 步长
  1. 切片赋值中,等号右边必须是可迭代对象。切片赋值时直接在原对象中修改。
  2. 切片赋值中,等号左边是需要替换的元素,等号右边是准备替换的新元素。如果需要替换的元素不是连续的一块位置。那么等号左边需要替换的元素数量必须要和等号右边要替换的新元素个数相等。
  3. 切片赋值中,如果步长不为1或者-1那么切割后会出现多个断裂层,此时插入的元素个数必须要与断裂层个数匹配
  4. 切片赋值中会直接在等号左边可迭代对象中修改。不会生成新的可迭代对象。
    slice12
  • 示例1:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
print("arr = {} \t id = {}".format(arr,id(arr)))
lst = list(b"abcd")
arr[:] = b"abcd"  #吧arr集合中范围为:[0,len(arr))的元素全部替换成 b"abcd"可迭代对象中的元素。
print("arr = {} \t id = {}".format(arr,id(arr)))
print("lst = {}".format(arr,list(b"abcd")))

slice07

  • 示例2:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
print("arr = {} \t id = {}".format(arr,id(arr)))
arr[2:] = b"abcd"  #吧arr集合中范围为:[2,len(arr))的元素全部替换成 b"abcd"可迭代对象中的元素。
print("arr = {} \t id = {}".format(arr,id(arr)))

slice08

  • 示例3:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
print("arr = {} \t id = {}".format(arr,id(arr)))
arr[:2] = b"abcd"  #吧arr集合中范围为:[0,2)的元素全部替换成 b"abcd"可迭代对象中的元素。
print("arr = {} \t id = {}".format(arr,id(arr)))

slice09

  • 示例4:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
print("arr = {} \t id = {}".format(arr,id(arr)))
arr[1:9] = b"abcd"  #吧arr集合中范围为:[1,9)的元素全部替换成 b"abcd"可迭代对象中的元素。
print("arr = {} \t id = {}".format(arr,id(arr)))

slice10

  • 示例11:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
print("arr = {} \t id = {}".format(arr,id(arr)))
#arr[1:9:2] = ["a","b"]  #注意此时,会将arr中 2,4,6,8 删除,会出现4个空位。而插入的元素只有两个。会报错。
arr[1:9:2] = ["a","b","c","d"]  #会将arr中 2,4,6,8 删除。并在对应位置替换成a,b,c,d
print("arr = {} \t id = {}".format(arr,id(arr)))

slice11

  • 示例12:
arr = [1,2,3,4,5,6,7,8,9,10] #定义一个列表
print(arr[2:],arr[5:],id(arr),sep="\t")
arr[2:] = arr[5:] #将arr元素中范围是[2:len(arr))的元素全部替换成 [6, 7, 8, 9, 10]里面的元素
print(arr,id(arr),sep="\t")

slice13

线性结构
  • 可迭代for….in
  • len()可以获取长度
  • 通过下标可以访问
  • 可以切片
常用线性结构
  • 列表(list)、元组(tuple)、字符串(str)、bytes 、bytearray
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值