最近看代码发现对冒号用法理解不够透彻,记录学习一下:
1.冒号的用法
1.1 一个冒号
a[i:j]
这里的i指起始位置,默认为0;j是终止位置,默认为len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j)
在一个冒号的情况下若出现负数则代表倒数某个位置
a[i:-j]这里就是从下标i取到倒数第j个下标之前(不包括倒数第j个下标位置的元素)
1.2 两个冒号
a[i:j:h]
这里的i,j还是起始位置和终止位置,h是步长,默认为1
若i/j位置上出现负数依然倒数第i/j个下标的位置,h若为负数则是逆序输出,这时要求起始位置下标大于终止位置
在两个冒号的情况下若h为正数,则i默认为0,j默认为len(a);
若h为负数,则i默认为-1(即最后一个位置),j默认为-len(a)-1(下标0的前一个位置,这样就能输出到下标0了)
import numpy as np
x=np.array([[1,2,3],[5,6,7],[7,8,9]])
print(x)
'''
[[1 2 3]
[5 6 7]
[7 8 9]]
'''
print(x[:,::-1])
'''
[[3 2 1]
[7 6 5]
[9 8 7]]
'''
print(x[:,::1])
'''
[[1 2 3]
[5 6 7]
[7 8 9]]
'''
print(x[:,::2])
'''
[[1 3]
[5 7]
[7 9]]
'''
print(x[:,::3])
'''
[[1]
[5]
[7]]
'''
print(x[:,::666666])
'''
[[1]
[5]
[7]]
'''
a='hello world'
print(a[:])#hello world
print(a[1:4:]) # 冒号后没有写明故代表默认步长为1 ell
print(a[:-1])# hello worl
# -1代表倒数第一个位置,因为:前面的初始位置没有指定,默认为0,就从下标0一直取到最后一个位置之前
print(a[1:-2]) # ello wor -2代表倒数第二个位置,即从下标1取到倒数第二个位置之前
print(a[::-1])#dlrow olleh
# 前两个冒号和上面一致,就是确定起始位置和终止位置
# 第三个参数-1是指步长为-1,也就是逆序输出
# 这里a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素
# 所以[::-1]经常用来对一个数组进行逆序输出
print(a[1:4:-1])
# 这里什么也没有输出,因为按照给定的步长是无法从下标1走到4的,所以输出为空但不会报错
print(a[-2:-7:-2])# 这里起始位置是-2,终点是-7(不包括,所以输出到-6位置),步长为-2 lo