【问题标题】:Why does extended slicing not reverse the list?为什么扩展切片不反转列表?
【发布时间】:2023-04-07 03:13:01
【问题描述】:

我在 python 中切片列表,无法解释一些结果。 以下两个对我来说都很自然:

>>>[0,1,2,3,4,5][1:4:1]
[1, 2, 3]

>>>[0,1,2,3,4,5]
[::-1] == [5,4,3,2,1,0]

然而,

>>>[0,1,2,3,4,5][1:4:-1]
[]

以为我希望它是 [3,2,1]。为什么会产生 [ ]?为什么它不反转列表?在 python 中,步骤或切片首先发生了什么?

我也发现了

>>>[0,1,2,3,4,5][-3:-6:-1]
[3,2,1]

【问题讨论】:

标签: python list


【解决方案1】:

切片中的第三个数字是步数。因此,在[0,1,2,3,4,5][1:4:-1] 中,切片从1 开始,然后下降1,直到小于4,即立即为。尝试这样做:

>>> [0,1,2,3,4,5][4:1:-1]
[4, 3, 2]

【讨论】:

    【解决方案2】:

    如果您正在切片,那么切片将如下所示[start:end:step]。对于这个:

    >>> [0,1,2,3,4,5][1:4:1]
    [1, 2, 3]
    

    它是从索引 1 到索引 3,因为它一次排除了索引 4 的 1 步。 您在第二个中得到一个空列表,因为您从第一个索引步进 -1。所以这将是解决方案。

    >>> [0,1,2,3,4,5][4:1:-1]
    [4, 3, 2]
    

    这是有效的,因为您将索引从 4 变为 1,并且向前迈出了 -1 步。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-06
      • 2019-12-04
      • 1970-01-01
      • 2016-03-09
      • 2018-07-27
      • 2019-10-01
      • 1970-01-01
      相关资源
      最近更新 更多