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)