一维数组

1. 单个冒号的情况

1.1 写完整的情况下

单个冒号的情况下,对数组的遍历操作是从前向后操作。如:arr[a:b] ,冒号前的a含义是从a开始遍历,冒号后的b含义是到b截止(不包括b)。

arr = [1, 2, 3, 4, 5, 6, 7]
print(arr[1:3])

输出结果为:[2, 3]

1.2 略写冒号前面的情况

如果略写冒号前面的话,默认系统会指定为1

arr = [1, 2, 3, 4, 5, 6, 7]
print(arr[:3])

输出结果为:[1, 2, 3]

1.3 略写冒号后面的情况

如果略写冒号后面的话,默认系统会指定为操作对象的长度+1,也就是说会遍历到最后一个元素为止。

arr = [1, 2, 3, 4, 5, 6, 7]
print(arr[3:])

输出结果为:[4, 5, 6, 7]

1.4 冒号前后指定负数的情况

冒号前后指定位置的变量或者常量还有更灵活的用法,例如可以指定为负数,例如 arr[2:-2] ,其中-2代表的含义是倒数第二个位置。本质上是用 len(arr)+1-2 计算得位置。

1.5 总结:

冒号前面后面随便都可以省略,只需要记住冒号前指定开始位置,冒号后指定结束位置+1(就类似于经常出现在python各种参数指定的“左闭右开”的原则)如果省略不指定冒号前面,就代表从0开始,如果省略不指定冒号后面,就代表到对象的最后一个元素。

2. 两个冒号的情况

2.1 写完整的情况下

两个冒号的情况,第一个冒号前后变量或常量代表的含义不变,第二个冒号后面来指定每次迭代的步数。例如:arr[1:-2:2] 该情况代表从第二个元素位置开始遍历,每次步数为2,到倒数第二个位置为止。

arr = [1, 2, 3, 4, 5, 6, 7]
print(arr[1:-2:2])

输出结果为: [2, 4]

2.2 省略第二个冒号后值的情况

和第一个冒号左右的值一样,第二个冒号右边的值也可以省略,省略的话即为迭代步数为1(这与不写第二个冒号的情况是一样的)

arr = [1, 2, 3, 4, 5, 6, 7]
print(arr[1:-2:])

输出结果为: [2, 3, 4, 5]

2.3 第二个冒号后值为负数的情况

如果步数指定为负数,则代表从后往前遍历。

arr = [1, 2, 3, 4, 5, 6, 7]
print(arr[-2::-1])

输出结果为: [6, 5, 4, 3, 2, 1]
在该例中省略第一个冒号后边的值,此时结束位置并不是正序的数组最后一个元素,而是倒序的数组的最后一个元素,因为遍历的顺序已经被指定为倒序,如果不指定结束位置,那么默认为首个元素的位置(倒序的最后一个元素的位置)

3. 总结

python中用冒号来遍历列表或者字符串等结构时,总的用法是 arr[开始位置:结束位置:迭代步数] ,每个位置的值都可以省略,只需要记住:

1. 省略开始位置值:则默认值是遍历顺序上的第一个位置。

2. 省略结束位置值:则默认值是遍历顺序上最后一个位置。

3. 省略迭代步数(通常是不写第二个冒号),默认值是1(顺序的步数为1的遍历)

需要注意第一个冒号不能省略,否则是按下标取值,最简单的写法是 arr[:] 代码含义是顺序的遍历arr列表。

二维数组

  • arrary[0, 3: 5] 表示第1维度取0,即第1行的所有元素。第2维度取起始位置3到终止位置5(不包括)的元素

  • arrary[4: , 4: ] 表示第1维度取第5行到末尾所有行,第2维度取第5列到末尾的所有列

  • array[ : , 2] 表示第1维度取所有行,第2维度取第3列的所有元素

  • arrary[2: : 2, : : 2] 表示第1维度取第3行到最后一行的行元素,步长为2,第2维度取所有列的元素,步长维
    在这里插入图片描述

考试:说出以下含义

x = training_data[:, :-1]

y = training_data[:, -1:]

z = img1[:,:,::-1]

u = xSorted[:2, :]

shape = im.shape[:2]  

答案

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐