10. 省略号常量

省略号 Ellipsis 是 Python中的一个常量。它通常用于扩展索引和切片操作的功能。

省略号的字面值是 Ellipsis。省略号字面值也可以写成三个点 ...。

作用:

用于自定义的容器类型扩展索引和切片的用法。如:numpy 和 pandas 模块。

省略号示例

numpy 是数据处理的一个包,他是第三方模块,需要安装。

numpy安装方法:

pip3 install numpy

示例:

import numpy

arr4d = numpy.ones(100).reshape(5, 2, 5, 2)
new_arr = arr4d[1:, ..., 1] 
print(new_arr)
# 或
new_arr2 = arr4d[1:, Ellipsis, 1] 
print(new_arr)

示例

在自定义的类中使用 省略号常量

# 省略号常量 示例
# http://weimingze.com

class Vector3D:
    '''用于描述三维向量的类!,x,y,z分别是向量的坐标位置!'''
    def __init__(self, x, y, z):
        self.x, self.y, self.z = x, y, z

    def __repr__(self):
        return f'Vector3D({self.x},{self.y},{self.z})'

    def __getitem__(self, item):
        print('__getitem__, item:', item)

    def __setitem__(self, key, value):
        print(f'__setitem__, key: {key}, value: {value}')

    def __delitem__(self, key):
        print(f'__delitem__, key: {key}')

v1 = Vector3D(1, 2, 3)
print('v1:', v1)
# v1[...]
# v1[Ellipsis]
# value = v1[1:, ..., 100]
# value = v1[1:, Ellipsis, 100]

上述程序改为如下:

v1 = Vector3D(1, 2, 3)
print('v1:', v1)
v1[...]
# v1[Ellipsis]
# value = v1[1:, ..., 100]
# value = v1[1:, Ellipsis, 100]

运行结果如下

v1: Vector3D(1,2,3)
__getitem__, item: Ellipsis

上述程序改为如下:

v1 = Vector3D(1, 2, 3)
print('v1:', v1)
# v1[...]
v1[Ellipsis]
# value = v1[1:, ..., 100]
# value = v1[1:, Ellipsis, 100]

运行结果如下

v1: Vector3D(1,2,3)
__getitem__, item: Ellipsis

上述程序改为如下:

v1 = Vector3D(1, 2, 3)
print('v1:', v1)
# v1[...]
# v1[Ellipsis]
value = v1[1:, ..., 100]
# value = v1[1:, Ellipsis, 100]

运行结果如下

v1: Vector3D(1,2,3)
__getitem__, item: (slice(1, None, None), Ellipsis, 100)

上述程序改为如下:

v1 = Vector3D(1, 2, 3)
print('v1:', v1)
# v1[...]
# v1[Ellipsis]
# value = v1[1:, ..., 100]
value = v1[1:, Ellipsis, 100]

运行结果如下

v1: Vector3D(1,2,3)
__getitem__, item: (slice(1, None, None), Ellipsis, 100)