【发布时间】:2019-12-18 03:59:08
【问题描述】:
我刚开始学习编程,需要澄清一下。
对于
s = "abcdef"
print(s[0:2:-1])
输出是一个空字符串。我不太明白为什么print(s[:2:-1]) 的输出是fed,而print(s[0:2:-1]) 没有。
【问题讨论】:
标签: python
我刚开始学习编程,需要澄清一下。
对于
s = "abcdef"
print(s[0:2:-1])
输出是一个空字符串。我不太明白为什么print(s[:2:-1]) 的输出是fed,而print(s[0:2:-1]) 没有。
【问题讨论】:
标签: python
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],因为@987654332 @ 是字符串的最后一个字符。
【讨论】:
如果将第三个参数设置为负数,则iterable的元素会倒序遍历。然后让第一个参数为空意味着迭代应该从最右边的元素开始。想想s[::-1] == 'fedcba'这个事实。
【讨论】:
我将解释索引中这三个数字的含义!
s = "abcdef"
在此字符串中,如果您从左侧数数,则索引以 0 开头,如果您从右侧数数,则以 -1 开头。这意味着,如果从左侧开始计数,a 的索引为 0,f 的索引为 5,如果从右侧计数,f 的索引为 -1,a 的索引为索引为-6。
因此
>>> s[0:-1]
'abcde'
如果你想要索引恒定分隔,那么你可以在开始和结束之后再引入一个数字,如下所示。
>>> s[0:5:2]
'ace'
这意味着,您正在从头到尾阅读每个 2nd 索引。此外,当你写
>>> s[::-1]
'fedcba'
您指的是每个-1 th 索引,这基本上意味着,是的!你猜对了:),颠倒顺序!
我认为这个答案以及这个线程中的其他答案应该给你一个好主意!
问候
【讨论】:
字符串切片的语法很简单:
x[start:end:step]
切片从start 开始并在end 之前结束,以step 迭代。
s[0:2:-1]
返回[],因为您不能从索引 0 向后切片到 2。这没有道理! s[2:0:-1](返回'cb')会更有意义。
s[:2:-1]
返回'fed'。省略 start 和 -1 的 step 意味着从序列末尾到反向索引 2 的切片(因为 step 是 -1)。
【讨论】:
例如替换 0 和 2
打印(s[2:0:-1])
【讨论】: