说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的省略号,与省略号字面值 ...
相同。 该特殊值主要是与用户定义的容器数据类型的扩展切片语法结合使用。 Ellipsis 是 types.EllipsisType
类型的唯一实例。
省略号是一个常量:
>>> ...
Ellipsis
>>> Ellipsis
Ellipsis
# 类型
type(...)
type(Ellipsis)
# ellipsis
在多维数组或列表中,省略号 ...
用于表示在剩余的轴上取全部元素,它与冒号:
的效果是一样的。下面是一个正确的示例:
import numpy as np
arr = np.array([
[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]],
[[13, 14, 15], [16, 17, 18]]
])
# 使用省略号进行切片操作,相当于取全部的剩余轴上的元素
print(arr[1, ...])
'''
[[ 7 8 9]
[10 11 12]]
'''
这里 arr[1, ...]
将取 arr 这个三维数组的第二个维度上的全部元素,等同于 arr[1, :, :]
。
在Python 3中,您可以使用...
作为尚未编写的代码的占位符:
def will_do_something():
...
在类型注解中,可以做为任意数据或者未被定义的数据:
from typing import Any, Callable, Tuple
a: Tuple[int, ...] = [1, 'as', 2]
class Foo:
bar: Any = ...
def __init__(self, name: str=...) -> None: ...
def partial(func: Callable[..., str], *args) -> Callable[..., str]:
# Body
...
自定义数据结构:在自定义的数据结构中,你也可以定义 Ellipsis 的行为,使得你的数据结构支持省略号的语义。
class MyCustomClass:
def __getitem__(self, item):
if item == Ellipsis:
return "This is a custom implementation of Ellipsis"
# 其他情况的处理
pass
obj = MyCustomClass()
print(obj[Ellipsis])
print(obj[...])
# 输出: This is a custom implementation of Ellipsis
在实践中,省略号通常与切片操作结合使用,以简化对多维数组的索引或切片操作。
省略号 ...
在 Python 中有几个主要的用途:
arr[0, ...]
相当于 arr[0, :, :]
,表示取第一个维度上的全部元素。使用场景可以参考 NumPy Array 的索引。def my_function(*args): ...
中,...
和 pass 一样代码占位,什么也不做。__getitem__
方法中,可以针对省略号进行特殊处理。总之,省略号 ...
提供了一种简洁、灵活的方式来表示一些特殊的语义或者简化一些操作,特别是在处理多维数据结构或者函数参数数量不确定的情况下。
省略号 ... 和 pass 在 Python 中有不同的作用和语义:
...
...
表示可接受任意数量的位置参数。省略号 ...
用于表示特殊的语义,而 pass 用于创建一个占位符,不执行任何实际操作。它们的使用场景和目的不同。
更新时间:April 12, 2024, 7:56 p.m. 标签:python 常量 省略号 ellipsis