当前位置: 首页 > 面试题库 >

如何通过切片符号a [::-1]解释序列的逆向

赫连瑾瑜
2023-03-14
问题内容

来自python.org教程

切片索引具有有用的默认值。省略的第一索引默认为零,省略的第二索引默认为要切片的字符串的大小。

>>> a = "hello"
>>> print(a[::-1])
olleh

正如教程所说,a[::-1]应该等于a[0:5:-1]

a[0:5:-1]为空,如下所示:

>>> print(len(a[0:5:-1]))
0

这个问题不是authentic-slice-
notation
的重复。这个问题与python中切片的一般用法有关。


问题答案:

我认为文档对此可能有点误导,但是切片的可选参数(如果省略)与使用相同None

>>> a = "hello"
>>> a[::-1]
'olleh'
>>> a[None:None:-1]
'olleh'

您可以看到上述两个切片与CPython字节码相同:

>>> import dis
>>> dis.dis('a[::-1]') # or dis.dis('a[None:None:-1]')
  1           0 LOAD_NAME                0 (a)
              3 LOAD_CONST               0 (None)
              6 LOAD_CONST               0 (None)
              9 LOAD_CONST               2 (-1)
             12 BUILD_SLICE              3
             15 BINARY_SUBSCR
             16 RETURN_VALUE

对于负step,对于取代的值Nonelen(a) - 1start-len(a) - 1end

>>> a[len(a)-1:-len(a)-1:-1]
'olleh'
>>> a[4:-6:-1]
'olleh'
>>> a[-1:-6:-1]
'olleh'

这可以帮助您可视化它:

    h  e  l  l  o   
    0  1  2  3  4  5
-6 -5 -4 -3 -2 -1


 类似资料:
  • 问题内容: 我的问题的一个具体示例是“在此示例中如何获得‘3210’?” 我可以写foo [4:0:-1],foo [5:1:-1]等并得到我期望的结果,这似乎很奇怪,但是无法编写切片以便得到‘3210 ‘。 一个临时的方法是foo [0:4] [::-1],但这会在进程中创建两个字符串对象。我实际上将执行此操作数十亿次,因此每个字符串操作都非常昂贵。 我一定想念一些愚蠢而轻松的事情。谢谢你的帮助

  • 问题内容: 我一直在寻找一种向后打印字符串的方法,在Google上进行快速搜索后,我发现了这种方法: 假设是一个字符串变量。这将向后返回字符串: 谁能解释它的工作原理? 问题答案: 当然,是扩展切片运算符。它允许您采用子字符串。基本上,它通过指定要用作[begin:end:step]的元素来工作,并且适用于所有序列。关于它的两件事: 您可以省略一个或多个元素,并且做“正确的事情” 开始,结束和步骤

  • 问题内容: 在以下示例中: 其中:将打印foo中的所有元素。但是,将省略第一个或第0个元素。 我了解我可以使用foo.reverse()或foo [::-1]反向打印列表,但是我想了解为什么foo [6:0:-1]不能打印整个列表? 问题答案: 切片符号简而言之: 如果要在反转列表时包括第一个元素,则将中间元素留空,如下所示: 您还可以在这里找到有关Python切片的一些很好的信息: Unders

  • 问题内容: 按引用返回的切片为空: 如何通过引用从函数返回切片? 问题答案: 通过分配给,您可以更改指向的位置,而不是指向的值。要做后者,而不是write 。

  • 本文向大家介绍如何在逆时针方向设置JavaFX PieChart的切片?,包括了如何在逆时针方向设置JavaFX PieChart的切片?的使用技巧和注意事项,需要的朋友参考一下 改变切片的方向 PieChart的第一个切片开始的角度称为开始角度,您可以使用setStartAngle()方法设置此值(默认为0)。 饼图类提供被称为属性(布尔值)顺时针指定当前饼图的切片是否在从开始角度沿顺时针方向(

  • 问题内容: 假设我有一个具有列表属性的对象: 我想通过注释为列表定义一个通用的自定义反序列化器: 我正在寻找一种创建“通用”反序列化器的方法- 一种能够对两种类型的列表进行反序列化的方法,类似于ContextualDeserializer,用于使用Jackson将JSON映射到不同类型的地图。 最终目的是实现自定义反序列化逻辑,以将空字符串反序列化为空列表,但是我想了解一种通用方法,而不仅仅是空字