gpt4 book ai didi

python - 省略号对象有什么作用?

转载 作者:太空狗 更新时间:2023-10-30 01:37:03 26 4
gpt4 key购买 nike

在漫不经心地浏览命名空间时,我注意到一个名为 Ellipsis 的奇怪对象,它似乎并没有什么特别之处,但它是一个全局可用的内置函数。

经过搜索,我发现它被 Numpy 和 Scipy 用于切片语法的一些模糊变体中......但几乎没有别的。

这个对象是否专门添加到语言中以支持 Numpy + Scipy?省略号是否有任何一般意义或用途?

D:\workspace\numpy>python
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> Ellipsis
Ellipsis

最佳答案

这出现在另一个 question最近。我将详细说明我的 answer从那里:

Ellipsis是一个可以出现在切片符号中的对象。例如:

myList[1:2, ..., 0]

它的解释完全取决于实现 __getitem__ 函数并在那里看到 Ellipsis 对象的任何东西,但它的主要(和预期)用途是在 numpy 中第三方库,增加了多维数组类型。由于不止一个维度,切片变得比起止索引更复杂;能够在多个维度上进行切片也很有用。例如,给定一个 4 × 4 数组,左上角区域将由切片 [:2, :2]:

定义
>>> a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])

>>> a[:2, :2] # top left
array([[1, 2],
[5, 6]])

进一步扩展,这里使用省略号来指示未指定的其余数组维度的占位符。可以将其视为表示它所放置的间隙中所有维度的完整切片 [:],因此对于 3d 数组,a[..., 0]a[:, :, 0] 相同,对于 4d a[:, :, :, 0],类似地,a[0, . .., 0]a[0, :, :, 0](无论中间有多少冒号,都构成了数组中的完整维数)。

有趣的是,在 python3 中,省略号文字 (...) 在切片语法之外可用,因此您实际上可以这样写:

>>> ...
Ellipsis

编辑:标准库 typing 模块中也使用了省略号:例如Callable[..., int] 指示返回 int 而不指定签名的可调用对象,或 tuple[str, ...] 表示一个可变长度的同构字符串元组。

关于python - 省略号对象有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41419113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com