Python x[:-1]实际上是如何工作的?
假设我有Python x[:-1]实际上是如何工作的?,python,string,slice,Python,String,Slice,假设我有x='abcde'。如果我写x[:]我得到'abcde',如果我写x[::2]我得到'ace'。因此冒号之间的空格表示第一个空格是“列表的开始”,第二个空格是“列表的结束”。就好像你在写x[0:len(x)]对吗 好的,当我写x[::-1]时,我得到的列表完全相反,即'edcba'。那么,我可以替换的等价值是什么? x[len(x)-1:0:-1]不起作用,因为第二个空格不包括该数字,所以我会得到'edcb'如果我去x[len(x)-1:-1:-1]它将什么也不做,因为x[len(x)-
x='abcde'
。如果我写x[:]
我得到'abcde'
,如果我写x[::2]
我得到'ace'
。因此冒号之间的空格表示第一个空格是“列表的开始”,第二个空格是“列表的结束”。就好像你在写x[0:len(x)]
对吗
好的,当我写x[::-1]
时,我得到的列表完全相反,即'edcba'
。那么,我可以替换的等价值是什么?
x[len(x)-1:0:-1]
不起作用,因为第二个空格不包括该数字,所以我会得到'edcb'
如果我去x[len(x)-1:-1:-1]
它将什么也不做,因为x[len(x)-1]==x[-1]
是的,如果我不使用冒号,它会一直起作用,我的困惑是,x[:]
实际上在做什么,它实际上在替换什么值?因为如果它总是“列表的开始和结束”,那么它在x[::-1]
上就不可能工作,它只会不打印任何内容,如果它知道如何反转它,那么它的值是多少,因为即使我们没有不能在正确的位置终止的问题(即不能把0放在中间空间,因为它不包括,但不能放1,因为这是列表的末尾)我们有问题,它仍然应该在0开始,即我们应该有。
是否改为aedcb
有人能解释一下幕后的魔法吗
多谢各位
(是的,我在谷歌上搜索了这个问题,试图在文档中查找,但找不到关于这个具体问题的解释)
编辑:我的问题的答案可以在的未被接受的答案中找到,即
谢谢各位切片将包括起始索引处的元素,而不包括停止索引。由于-1的“停止”索引已具有不同的含义(用于环绕字符串末尾),因此您必须使用
无
:
>>> x[len(x)-1:None:-1]
'edcba'
它是x[len(x)-1:-1:-1]
,但这只是列表的情况,基本上x[::-1]
相当于x[slice(None,None,-1)]
,这取决于x
如何处理。特别是,`x[len(x)-1::-1]`解决了负步骤的情况