【问题标题】:What is `a[start:stop, i]` in Python slicing? [duplicate]Python切片中的`a [start:stop,i]`是什么? [复制]
【发布时间】:2021-12-03 12:55:18
【问题描述】:

built-in function slice 的 Python 文档是(强调我的):

class slice(stop)
class slice(start, stop[, step])

返回一个切片对象,表示由range(start, stop, step) 指定的索引集。 startstep 参数默认为 None。切片对象具有只读数据属性startstopstep,它们仅返回参数值(或其默认值)。它们没有其他明确的功能;但是它们被 NumPy 和其他第三方包使用。 使用扩展索引语法时也会生成切片对象。例如:a[start:stop:step]a[start:stop, i]。有关返回迭代器的替代版本,请参阅 itertools.islice()

a[start:stop, i] 是什么意思?

我试过了(在 Python 3.6 中):

a = [1, 2, 3, 4, 5, 6]
a[1:3,1]

但是得到了:

TypeError: list indices must be integers or slices, not tuple

【问题讨论】:

  • 根据a 表示不同的含义。如果a 是一个列表,那么它是无效的,正如您所见。
  • 文档不清楚,但你可以在 numpy 中完成,这意味着在 1:3 行中大致选择第 1 列
  • 也许只是文档中的错字?

标签: python list slice built-in


【解决方案1】:

您不能将:, 与列表结合使用。

: 用于直接切片:

a[1:3:1]

,slice 一起使用:

a[slice(1,3,1)]

但是,对于支持它的对象(如 numpy 数组),您可以在多个维度上进行切片:

import numpy as np
a = np.array([[0,1,3],[3,4,5]])
a[0:1,2]

输出:array([3])

【讨论】:

  • 你可以,a[1:2, 3]a.__getitem__((slice(1, 2, None), 3)) 的简写,其他类可能支持(查看 numpy 以获得大量示例)。 list 无法处理。
  • @mata 我以为问题是针对列表的,我会更新
  • 您是否看到 a[start:stop, i] 直接来自 OP 引用的 Python 文档?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 2017-12-15
  • 1970-01-01
  • 2015-02-01
  • 2013-10-24
  • 2020-05-10
  • 2011-05-04
相关资源
最近更新 更多