Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中进行切片时,为什么要结束+;1/end-1不是end?_Python_Python 3.x_List - Fatal编程技术网

在python中进行切片时,为什么要结束+;1/end-1不是end?

在python中进行切片时,为什么要结束+;1/end-1不是end?,python,python-3.x,list,Python,Python 3.x,List,假设s=“mrunal” 我想打印run 为此,我正在做print(s[1:4]) 但是在python中,为什么print(s[1:3])不可用 我只是想告诉大家,为什么切片中的end不是我们想要作为最后一个字符的索引 s="mrunal" 索引0=“m” 索引1=“r” 索引2=“u” 索引3=“n” 索引4=“a” 索引5=“l” 这里“n”的索引是3。为什么结束索引与s[1:3]不同?为什么它不具有包容性?为什么使用独占?编辑: Python,从0开始计数。这意味着如

假设
s=“mrunal”

我想打印
run

为此,我正在做
print(s[1:4])

但是在python中,为什么
print(s[1:3])
不可用

我只是想告诉大家,为什么切片中的
end
不是我们想要作为最后一个字符的索引

s="mrunal"
索引0=“m”

索引1=“r”

索引2=“u”

索引3=“n”

索引4=“a”

索引5=“l”

这里
“n”
的索引是3。为什么结束索引与
s[1:3]
不同?为什么它不具有包容性?为什么使用独占?

编辑:

Python,从0开始计数。这意味着如果你需要第一个字母,你就写0。第二个字母1以此类推

s="mrunal"

index 0 = "m"

index 1 = "r"

index 2 = "u"

index 3 = "n"

index 4 = "a"

index 5 = "l"

这意味着您需要从第二个字母(索引1)到第四个字母(索引4)

这不是一个很好的答案,但在处理索引序列时,上界通常是排他性的,这意味着它不包括索引本身

为什么??我一直认为这是因为序列的最后一个索引比大小小一个,因此可以使用大小作为上界,而无需将其偏移1:

s[1:] == s[1:len(s)]
还请注意,
范围
的行为也相同,其上限是独占的


这也不是Python特有的。许多语言使用排他性上界;特别是在处理序列索引时。除非您阅读其他内容,否则这是一件好事。

阅读答案,它可能会消除您对切片的疑虑。这是否回答了您的问题?半开放间隔更容易推理。例如,
s[1:4]+s[4::==s
foo[0:5]
最多提供5个字符。切片通常是计算值
foo[n:n+2]
最多提供2个<如果
bar
为零,则code>foo[foo:foo+bar]将为您提供0个字符。这通常是最自然的做事方式。@dcg@TomMyddeltyn It没有提供我问题的答案
为什么会这样?
我想这就是实际问题的答案:OP是问它为什么会这样工作,而不是它是如何工作的,所以复制品不相关。答案是这样的-为了与
range()
保持一致,这反过来也是为了与较旧的编程语言保持一致,原因如下。@Carcigenicate但为什么它不采取
end
,即使从零开始。正如我所看到的例子,为什么end+1不是directend?@MRUNALMUNOT我试图在“为什么”下解决这个问题。最后一个索引是
size-1
,因此将其设为独占索引可以省去减去1的麻烦。这与其他语言中使用
循环的
相同,正如您为字符
所解释的那样,“n”
索引为3。为什么索引不被接受?您键入的最后一个字母(索引4)不被计数顺便说一句,有趣的事实:
s=“mrunal”打印(s[0::2])
我上面在注释中的代码以跳过2“mua”的方式打印“mrunal”,那么,为什么它是独占的,而不是包含的呢?