首页 > 其他分享 >wee3截取子切片

wee3截取子切片

时间:2023-01-07 22:01:10浏览次数:37  
标签:截取 cap len s4 切片 标量 wee3 s1

  • 一.截取子切片
  1. 切片可以通过指定索引区间获得1个子切片
  2. 切片规则: clice[start:end],规则是前包后不包
    1. start不写为0
    2. end默认为len(slice)长度,如果写可以不是长度值
    3. start,end不能超过容量值
    4. len截取段的元素个数,end-start
    5. cap从header中的pointer指针开始向底层数组末尾数,还有几个元素容量

1.复习:

// 切片可以通过指定索引区间获得1个子切片,格式位clice[start:end],规则是前包后不包
func main() {
  s1 := []int{10, 30, 50, 70, 90} //字面定义1个切片,len=5 cap=5
  fmt.Printf("s1 标量值地址:%p |标量值:%p %d, %d|, %v \n", &s1, &s1[0], len(s1), cap(s1), s1)
    for i, _ := range s1 {
      fmt.Println(i, &s1[i])
    }

  s2 := s1
  fmt.Printf("s2 %p |标量值:%p %d, %d|, %v \n", &s2, &s2[0], len(s2), cap(s2), s2)
}

  • 结果:

2.子切片---全切

s3 := s1[:]
  //1.全切 [10 30 50 70 90]
  //2.子切片:用底层数组部分元素。不会导致扩容,共用1个底层数组
  //3.构造1个新header,不构造新的底层数组
fmt.Printf("s3 标量值地址:%p |标量值:%p %d, %d|, %v \n", &s3, &s3[0], len(s3), cap(s3), s3)

3.切片去尾巴

s4 := s1[1:] //[1:5]
  //1.掐头 [30 50 70 90]
  //2.偏移8byte(1个元素),首地址改变,s4看不到第一个元素,len=4,cap=4
  //3.用底层数组部分元素。不会导致扩容,共用1个底层数组
  //4.构造1个新header,不构造新的底层数组
fmt.Printf("s4 标量值地址:%p |标量值:%p %d, %d|, %v \n", &s4, &s4[0], len(s4), cap(s4), s4)

结果

4.切片掐头去尾

s5 := s1[1:4]
  // 1.底层数组[10 30 50 70 90] 掐头去10, 去尾90 [30 50 70]
  // 2.偏移8byte(1个元素),首地址改变;
  // 3.len=截取段的元素个数,end-start=3;
  // 4.cap从header中的pointer指针开始向底层数组末尾数,还有几个元素容量=4
fmt.Printf("s5 标量值地址:%p |标量值:%p %d, %d|, %v \n", &s5, &s5[0], len(s5), cap(s5), s5)

结果

5.掐头


标签:截取,cap,len,s4,切片,标量,wee3,s1
From: https://www.cnblogs.com/john5yang/p/17033332.html

相关文章

  • 3week-4切片
    一.切片的特性可以切除来一个新的子片长度可变,长度元素个数容量可变,长度和容量可以不一样底层用数组,(顺序表访问快)推荐使用make定义,可以指定初始容量大小,减少......
  • 深入学习go语言(二):数据结构-切片
    在go语言实际开发过程,我们使用更多的是切片而不是数组,数组的固定长度注定了只能在一些特殊场景下才具有优势。切片是长度可变的,所以切片的类型只有其存储的元素类型这一个......
  • [深度学习] 基于切片辅助超推理库SAHI优化小目标识别
    对象检测是迄今为止计算机视觉中最重要的应用领域。然而,小物体的检测和大图像的推理仍然是实际使用中的主要问题,这是因为小目标物体有效特征少,覆盖范围少。小目标物体的定......
  • Shell字符串截取(非常详细)
    一、从指定位置开始截取1)从字符串的左边开始截取(下标计数从0开始)如果想从字符串的左边开始计数,那么截取字符串的具体格式如下:${string:start:length}其中,string是......
  • 截取用户名前10位
    描述牛客网正在录入用户的昵称,但是有的昵称太长了,对于这些过长的昵称,牛牛觉得截取昵称字符串前10个字符就可以了,你可以帮他写一个程序吗?输入描述:输入一个字符串,长度......
  • NumPy科学计算库学习_007_NumPy数组的基本索引和切片
    导入模块importnumpyasnp一维数组切片创建一个NumPy数组arr=np.array([0,1,2,3,4,5,6,7,8,9])print("【arr】\n",arr)【arr】[0123456789]从Num......
  • 显示切片器选择的个数
     问题:如何显示切器片选择的个数解决:切片器选择的个数无法显示,但可以对数据透视表结果进行公式运算,切片结果所在为E列,公式为=COUNTA(UNIQUE(E:E))-3  Unique部......
  • 音视频:JavaCV 视频切片(MPEG-TS)(HLS)
    需要进行简单的音视频编程,如果不是特别数据C/C++,那么JavaCV应该是比较好的选择,下面记录一下使用JavaCV视频切片(MPEG-TS)(HLS)的方法。注意:存放HLS切片的目录必须存在(不会自......
  • VTK_Learning_三维图像切片(一)
    1.三维图像切片提取切片是指三维图像中的一个切面对应的图像。切面可以是过图像内部一点且平行于XY、YZ、XZ平面的平面,也可以是任意的过三维图像内部一点任意方向的平面。通......
  • VTK_Learning_三维图像切片(二)———鼠标交互(回调函数、观察者-命令模式)
    学习三维图像切面的提取后,我们可以实现一个稍微复杂的程序——通过滑动鼠标来切换三维图像切片,这也是医学图像处理软件中一个很基本的功能。实现该功能难点是怎样在VTK中控......