来自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
,对于取代的值None
是len(a) - 1
为start
和-len(a) - 1
为end
:
>>> 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映射到不同类型的地图。 最终目的是实现自定义反序列化逻辑,以将空字符串反序列化为空列表,但是我想了解一种通用方法,而不仅仅是空字