一维数组
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维度取所有列的元素,步长维