Python中的索引和切片

Python中的索引和切片,python,Python,我刚开始学习编程,我需要一些澄清 为了 输出为空字符串。我不太明白的是为什么print(s[:2:-1])有一个fed输出,而print(s[0:2:-1])没有。例如,替换0和2 print(s[2:0:-1])如果将第三个参数设置为负值,则iterable的元素将按相反顺序遍历。然后让第一个参数为空意味着迭代应该从最右边的元素开始。想想这样一个事实,s[::-1]=“fedcba”print(s[:2:-1])与print(s[0:2:-1])-它与print(s[None:2:-1])是一

我刚开始学习编程,我需要一些澄清

为了


输出为空字符串。我不太明白的是为什么
print(s[:2:-1])
有一个fed输出,而
print(s[0:2:-1])
没有。

例如,替换0和2


print(s[2:0:-1])

如果将第三个参数设置为负值,则iterable的元素将按相反顺序遍历。然后让第一个参数为空意味着迭代应该从最右边的元素开始。想想这样一个事实,
s[::-1]=“fedcba”
print(s[:2:-1])
print(s[0:2:-1])
-它与
print(s[None:2:-1])
是一样的。当您省略一个切片参数或使用
None
时,将替换端点。如果步长为负,则起点为序列的终点,终点为序列的起点
print(s[0:2:-1])
s[0]
s[2]
,但它不能,因为
2>0
并且无法从0倒数到2
print(s[:2:-1])
s[-1]
s[2]
,因为
s[-1]
是字符串的最后一个字符。

我将解释索引中这三个数字的含义

s = "abcdef"
在这个字符串中,如果从左计数,索引从
0
开始;如果从右计数,索引从
-1
开始。这意味着,如果从左开始计数,
a
索引为
0
f
索引为
5
,如果从右开始计数,
f
索引为
-1
a
索引为
-6

因此

如果希望索引具有常量分隔,那么可以在开始和结束后再引入一个数字,如下所示

>>> s[0:5:2]
'ace'
这意味着,您正在从头到尾读取每个
2
nd索引。此外,当你写作时

>>> s[::-1]
'fedcba'
你指的是每一个
-1
th索引,这基本上意味着,是的!你猜对了:),颠倒顺序

我认为这个答案连同这个帖子中的其他答案应该会给你一个好主意


关于

字符串切片的语法很简单:

x[start:end:step]
其中切片从
start
开始,在
end
之前结束,通过
步骤进行迭代

s[0:2:-1]
返回
[]
,因为无法从索引0向后切片到索引2。这毫无意义
s[2:0:-1]
(返回
'cb'
)更有意义

s[:2:-1]
返回
“fed”
。省略
开始
步骤
为-1意味着从序列末尾到索引2的一个片段反向(因为
步骤
为-1)。

另外:
s[0:2:-1]
s[:2:-1]