我刚刚开始学习编程,需要一些澄清。
关于
s = "abcdef"
print(s[0:2:-1])
输出为空字符串。我不太理解的是为什么
print(s[:2:-1])
的输出是fed,而print(s[0:2:-1])
没有输出。我刚刚开始学习编程,需要一些澄清。
关于
s = "abcdef"
print(s[0:2:-1])
print(s[:2:-1])
的输出是fed,而print(s[0:2:-1])
没有输出。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] == 'fedcba'
这个事实。
s = "abcdef"
0
开始,如果你从右边开始计数,索引值从-1
开始。也就是说,如果你从左边开始计数,a
的索引值为0
,f
的索引值为5
;如果你从右边开始计数,f
的索引值为-1
,a
的索引值为-6
。
因此,
>>> s[0:-1]
'abcde'
>>> s[0:5:2]
'ace'
>>> s[::-1]
'fedcba'
-1
索引,这基本上意味着,是的!你猜对了 :) ,颠倒顺序!我认为这个答案以及该线程中的其他答案应该能给你一个很好的想法!敬礼。
x[start:end:step]
其中切片从start
开始,到end
之前结束,每次迭代按step
进行。
s[0:2:-1]
返回[]
,因为你不能从索引0到2向后切片。这毫无意义!s[2:0:-1]
(返回'cb'
)会更有意义。
s[:2:-1]
返回'fed'
。省略start
和step
为-1意味着从序列末尾开始到索引2的反向切片(因为step
为-1)。
例如替换0和2
打印(s [2:0:-1])