gpt4 book ai didi

python - Python 表达式文档中的 "Slicing"

转载 作者:IT老高 更新时间:2023-10-28 21:06:59 25 4
gpt4 key购买 nike

我不理解 Python 文档的以下部分:

http://docs.python.org/reference/expressions.html#slicings

这是指列表切片( x=[1,2,3,4]; x[0:2] )..?特别是提到省略号的部分..

slice_item       ::=  expression | proper_slice | ellipsis

The conversion of a slice item that is an expression is that expression. The conversion of an ellipsis slice item is the built-in Ellipsis object.

最佳答案

Ellipsis主要由 numeric python 使用扩展,它添加了一个多维数组类型。由于有多个维度,slicing变得比开始和停止索引更复杂;能够在多个维度上切片也很有用。例如,给定一个 4x4 数组,左上角区域将由切片 "[: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].

请注意,虽然有一个内置的 Ellipsis 对象,但实际的 Ellipsis 文字 (...) 在 python2 中的切片语法之外是不可用的。这就是“省略号切片项的转换是内置的省略号对象”的意思。 IE。 “a[...]”实际上是“a[Ellipsis]”的糖。在python3中, ... 表示任何地方的省略号,所以你可以这样写:

>>> ...
Ellipsis

如果你不使用 numpy,你几乎可以忽略所有提到的省略号。没有任何内置类型使用它,所以您真正需要关心的是列表传递一个切片对象,其中包含 "start","stop"和“step”成员。即:

l[start:stop:step]   # proper_slice syntax from the docs you quote.

相当于调用:

l.__getitem__(slice(start, stop, step))

关于python - Python 表达式文档中的 "Slicing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752602/

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