您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么python的列表切片不会产生索引超出范围的错误?

为什么python的列表切片不会产生索引超出范围的错误?

切片用于创建新列表 。如果索引不在列表中元素的数量范围内,我们可以返回一个空列表。因此,我们不必抛出错误

但是,如果尝试访问列表中大于元素数量的元素,则无法返回任何认值(即使None因为它可能是列表中的有效值)也无法返回。这就是为什么

IndexError: list index out of range

被抛出。

切片时,如果起始索引大于或等于序列的长度,则在此中将返回序列的长度设置为0

defstop = *step < 0 ? -1 : length;
...
if (r->stop == Py_None) {
    *stop = defstop;
}
...
if ((*step < 0 && *stop >= *start)
    || (*step > 0 && *start >= *stop)) {
    *slicelength = 0;

对于字符串,如果切片后要返回的字符串的长度为0,则它??将在此行中返回空字符串

if (slicelength <= 0) {
    return PyString_FromStringAndSize("", 0);
}
python 2022/1/1 18:32:59 有214人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶