2022年 11月 5日

代码学习之Python冒号详解

最近看代码发现对冒号用法理解不够透彻,记录学习一下:

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了)

 

  1. import numpy as np
  2. x=np.array([[1,2,3],[5,6,7],[7,8,9]])
  3. print(x)
  4. '''
  5. [[1 2 3]
  6. [5 6 7]
  7. [7 8 9]]
  8. '''
  9. print(x[:,::-1])
  10. '''
  11. [[3 2 1]
  12. [7 6 5]
  13. [9 8 7]]
  14. '''
  15. print(x[:,::1])
  16. '''
  17. [[1 2 3]
  18. [5 6 7]
  19. [7 8 9]]
  20. '''
  21. print(x[:,::2])
  22. '''
  23. [[1 3]
  24. [5 7]
  25. [7 9]]
  26. '''
  27. print(x[:,::3])
  28. '''
  29. [[1]
  30. [5]
  31. [7]]
  32. '''
  33. print(x[:,::666666])
  34. '''
  35. [[1]
  36. [5]
  37. [7]]
  38. '''
  1. a='hello world'
  2. print(a[:])#hello world
  3. print(a[1:4:]) # 冒号后没有写明故代表默认步长为1 ell
  4. print(a[:-1])# hello worl
  5. # -1代表倒数第一个位置,因为:前面的初始位置没有指定,默认为0,就从下标0一直取到最后一个位置之前
  6. print(a[1:-2]) # ello wor -2代表倒数第二个位置,即从下标1取到倒数第二个位置之前
  7. print(a[::-1])#dlrow olleh
  8. # 前两个冒号和上面一致,就是确定起始位置和终止位置
  9. # 第三个参数-1是指步长为-1,也就是逆序输出
  10. # 这里a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素
  11. # 所以[::-1]经常用来对一个数组进行逆序输出
  12. print(a[1:4:-1])
  13. # 这里什么也没有输出,因为按照给定的步长是无法从下标1走到4的,所以输出为空但不会报错
  14. print(a[-2:-7:-2])# 这里起始位置是-2,终点是-7(不包括,所以输出到-6位置),步长为-2 lo

 

 

参考博客https://www.cnblogs.com/liuys635/p/11209946.html