关于Python';s切片表示法
这行代码关于Python';s切片表示法,python,slice,Python,Slice,这行代码 print [0, 1, 2, 3, 4][0:1:1] 返回[0] 但是,以下代码行: print [0, 1, 2, 3, 4][0:0:1] 返回[] 为什么会这样?基于此,我的理解是格式应为: a[start:end:step] # start through not past end, by step 所以不应该[0,1,2,3,4][0:0:1]以第0个值开始和结束,从而返回[0]?请注意,这是[0:0:1]而不是[0:1:1] 因此: 切片[start:end:st
print [0, 1, 2, 3, 4][0:1:1]
返回[0]
但是,以下代码行:
print [0, 1, 2, 3, 4][0:0:1]
返回[]
为什么会这样?基于此,我的理解是格式应为:
a[start:end:step] # start through not past end, by step
所以不应该
[0,1,2,3,4][0:0:1]
以第0个值开始和结束,从而返回[0]
?请注意,这是[0:0:1]
而不是[0:1:1]
因此:
切片[start:end:step]
意味着它将返回在开始
和结束-1
之间的值,并带有特定的步骤
,因此对于您的示例:
...[0:0:1]
值介于0和-1之间,因此它不会返回任何内容。切片的“结束”索引始终从结果中排除;i、 例如,
listy[start:end]
返回所有listy[i]
其中startPython切片表示法中的结束索引是独占的。[n:m]
的一个片段将返回索引为>=n和
要稍微简化一些,请尝试不使用步骤(当步骤值为1时不需要步骤):
作为一般规则,切片中的元素数等于切片的开始索引减去切片的结束索引。即,切片[n:m]
将返回m-n个元素。这与[0:1]
返回的一个元素(1-0)和[0:0]
返回的零个元素(0-0)一致
(请注意,如果任何一个切片索引超出数组大小,则情况并非如此。)
为了更好地可视化切片索引的工作方式,在未结束时搜索“记住切片工作方式的一种方法”是不正确的-直到(但不包括)结束时
是正确的。Python切片在开始
结束时是包含的,但在结束时是独占的。
...[0:0:1]
>>> a = [0, 1, 2, 3, 4]
>>> a[0:1]
[0]
>>> a[0:0]
[]