当前位置: 首页 > 网络应用技术

为什么python切片索引不?

时间:2023-03-08 16:38:29 网络应用技术

  切片是Python中非常独特的特征。在正式开始之前,让我们回顾一下切片的知识。

  切片主要用于序列对象,并根据索引间隔截获了索引的内容。

  切片写作表格:[I:I+N:M];其中,我是本节的起始索引值,当列表是第一名时,可以省略; m无法提供。默认值为1,不允许为0。当m为负时,列表翻转。

  切片的基本含义是:从i-到序列的索引,将n位元素向右取,并过滤M间隔。

  以下是一些代表性的示例,基本上涵盖了切成薄片语法的主要点:

  诸如C/C ++,Java和JavaScript之类的语言,尽管它也支持一些“切片”功能,例如段或字符串的段截距,但它们在语法层面上没有多功能性。

  根据Wikipedia的说法,Fortran是支持切片语法(1966)的最早语言,而Python是最具代表性的语言之一。

  此外,诸如Perl,Ruby,Go和Rust之类的语言被切成薄片,但它们不如Python那么灵活和免费(因为它支持步骤,负索引,默认索引)。

  切片的基本用法可以满足大多数需求,但是python slices具有一些高级用法,例如:切片定位方法(可以实现列表的分配,删除和剪接操作),而自定义的对象可以实现切片函数,itertools.islice()),文件对象切片等。

  切片的介绍和评论在这里。

  文章标题的问题:为什么python的slice语法不是索引世界?

  当我们采用单个索引的值时,如果索引索引索引,我们将遇到一个错误:“ indexError:列表索引范围内”。

  对于非空序列对象,假设其长度为长度,有效索引值是从0到(长度-1)。如果也考虑了负索引,则单个索引值的有效范围为[ - 长度,长度,长度-1]闭合间隔。

  但是,当Python切片中的索引超过此范围时,该程序不会报告错误。

  实际上,对于这种现象,官方文件有一个介绍:

  从i到j的s切片定义为具有索引k的项目序列,使得i <= k <j。如果我或J大于Len。如果我被省略了Ornone,请使用0。如果省略J或无。请使用Len(S)。如果我大于J,则切片为空。

  换句话说:

  一词中,Python解释器阻止了可能导致索引越过边界的操作。您的写作可以非常免费,但最终结果将仅限于法律指数范围。

  对于这种现象,我实际上有些困惑。为什么Python不直接向交叉订单报告,为什么您必须纠正切片的边界值,为什么要返回值,即使此值可能是一个空序列?

  当我们使用“ li [5:6]”时,至少从字面上想表达“从5到6个相应的值中取出索引”,就好像“从左到右”取出书架,从左到右计数,”6和7本书”。

  如果该程序符合我们的说明,则应报告错误,应该说:对不起,书架上的书还不够。

  老实说,我没有找到这种解释,本文并不是要为您在设计python时提供任何独特的见解。相反,本文的主要目的之一是获得所有人的答复。

  在GO语言中,当遇到同一场景时,其方法是报告错误“运行时错误:切片范围之外的范围”。

  在锈语语言中,当遇到同一场景时,其方法是报告错误“字节索引5不超出...的范围”。

  在支持切成薄片的语法的其他语言中,可能的设计可能与Python相同。但是,我不知道是否有任何(浅知识)...

  最后,“ python的切片没有索引世界。”我实际上想问两个问题:

  第二个问题的第二个问题没有答案。

  也许我很快就能找到答案,但是可能需要很长时间。任何条件,本文首先在这里。

  以上是该共享的所有内容。如果您想了解更多信息,请转到公共帐户:Python编程学习圈,每日干货共享

  原始:https://juejin.cn/post/7100770323611516965