Python中的字符串切片/子字符串/范围

Python中的字符串切片/子字符串/范围,python,string,Python,String,我是Python的新手,我想知道一些我觉得很好奇的事情 假设我有这个: s = "hello" 然后: s[1:4]打印“ell”,这很有意义。。。 然后s[3:-1]只打印“l”,这也有意义 但是 s[-1:3]的范围相同,但向后返回空字符串“”。。。s[1:10]或s[1:-20]根本没有抛出错误。。哪个。。在我看来,它应该产生一个错误,对吗?典型的越界错误..: 我的结论是,范围总是从左到右,我想与社区确认这是否如我所说的那样 谢谢 s[-1:3]返回空字符串,因为该范围内没有任何内容。

我是Python的新手,我想知道一些我觉得很好奇的事情

假设我有这个:

s = "hello"
然后:

s[1:4]
打印“ell”,这很有意义。。。 然后s[3:-1]只打印“l”,这也有意义

但是

s[-1:3]
的范围相同,但向后返回空字符串“”。。。s[1:10]或
s[1:-20]
根本没有抛出错误。。哪个。。在我看来,它应该产生一个错误,对吗?典型的越界错误..:

我的结论是,范围总是从左到右,我想与社区确认这是否如我所说的那样


谢谢

s[-1:3]
返回空字符串,因为该范围内没有任何内容。它请求从最后一个字符到第三个字符的范围向右移动,但最后一个字符已经超过第三个字符

默认情况下,范围从左到右

有几种方法可以反转步骤,或改变其大小。所以
s[-1:3:-1]
只会给你一个“o”。该切片中的最后一个-1告诉您切片应该从右向左移动

如果请求的范围不在字符串中,切片不会抛出错误,它们只会为这些位置返回一个空字符串。

范围被“钳制”到字符串的范围。。。i、 e

s[:10]
将返回前10个字符,如果字符串不够长,则返回更少的字符

负索引意味着从末尾开始计数,因此
s[-3:]
采用最后三个字符(如果字符串较短,则采用更少的字符)

可以使范围向后,但需要使用明确的步骤,如

s[10:5:-1]
您也可以简单地使用

s[::-1]
或者将所有字符置于相等位置,并使用

s[::2]

它有助于将语言包含为标记。