当前位置:   article > 正文

Python——切片(Slice)_切片步进为2

切片步进为2

切片 | 实现机制

Python 中对字符串、列表、元组等序列类型数据的通过下标索引访问以及简洁高效的切片操作都是通过由解释器调用的该对象的魔法方法__getitem__()实现的。

a = ['a', 'b', 'c', 'd', 'e']
  • 1

以下两个操作等效

>>> a[1]
'b'

>>> a.__getitem_(1)
'b'
  • 1
  • 2
  • 3
  • 4
  • 5
切片 | 操作实例

类似于range(),切片的三个参数分别代表开始索引、结束索引和步长值。参数间使用:分隔开。即

[start: end: step]
  • 1

下面以列表进行演示。

a = [1, 3, 5, 8, 10, 13, 18, 36]
  • 1
  • 遍历所有元素
>>> a[:]
[1, 3, 5, 8, 10, 13, 18, 36]
>>> a[::]
[1, 3, 5, 8, 10, 13, 18, 36]
  • 1
  • 2
  • 3
  • 4
  • 支持负数(倒数)索引
>>> a[-6: -2]
[5, 8, 10, 13]
  • 1
  • 2
  • 取出下标为偶数的元素,即步长为 2
>>> a[: : 2]
[1, 5, 10, 18]
  • 1
  • 2
  • 逆序取出所有元素
>>> a[: : -1]
[36, 18, 13, 10, 8, 5, 3, 1]
  • 1
  • 2
  • 逆序取出下标为偶数的元素
>>> a[: : -2]
[36, 13, 8, 3]
  • 1
  • 2
  • 替换多个元素
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[0:3] = ['a','b','c']
>>> a
['a', 'b', 'c', 3, 4, 5, 6, 7, 8, 9]
  • 1
  • 2
  • 3
  • 4
  • 在某个位置插入多个元素
>>> a[3:3] = ['a','b','c']
>>> a
[0, 1, 2, 'a', 'b', 'c', 3, 4, 5, 6, 7, 8, 9]
  • 1
  • 2
  • 3
  • 在开始位置之前插入多个元素
>>> a= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:0] = ['a','b','c']
>>> a
['a', 'b', 'c', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 1
  • 2
  • 3
  • 4
  • 删除切片
>>> a= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[3:6]
>>> a
[0, 1, 2, 6, 7, 8, 9]

  • 1
  • 2
  • 3
  • 4
  • 5

当然,切片不仅仅能作用于列表,比如说,字符串

>>> s = "I&; d0L8aO#4VqwE89 fWU#$"

>>> s[: : 3]
'I LOVE U'
  • 1
  • 2
  • 3
  • 4

事实上,所有的序列类型数据都支持切片操作。

常见的序列类型有:字符串、列表、元组等。

多维数组切片
方式一

list 切片类似 C 数组,多维度分别用[]索引,单维度切片用:,如:

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> a[1][1:3]
[5, 6]
  • 1
  • 2
  • 3
  • 4

但是这样做第二个维度索引不起作用:

>>> a[1:3][0:2]
[[4, 5, 6], [7, 8, 9]]
  • 1
  • 2

把 list当作 ndarray 去 slice 也是不对的:

方式二

ndarray切片用一个”[]“里面加逗号的方式,如:

>>> a = np.round(np.random.rand(3,3)*10)
array([[9., 5., 1.],
       [3., 1., 5.],
       [2., 5., 5.]])

>>> a[1:3,0:2]
array([[3., 1.],
       [2., 5.]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样做第二个维度索引不起作用:

>>> a[1:3][0:2]
array([[3., 1., 5.],
       [2., 5., 5.]])
  • 1
  • 2
  • 3
References

Python多维数组切片

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/611194
推荐阅读
相关标签
  

闽ICP备14008679号