当前位置: 首页 > 面试题库 >

Python-为什么索引超出范围的子字符串切片有效?

谢昂雄
2023-03-14
问题内容

为什么不'example'[999:9999]导致错误?既然如此'example'[9],其背后的动机是什么?

从这种行为,我可以假设在'example'[3]本质上/内部与并不相同'example'[3:4],即使两者都导致相同的'm'字符串。


问题答案:

没错!'example'[3:4]'example'[3]根本不同,并且在序列范围之外进行切片(至少对于内置对象而言)不会导致错误。

起初可能令人惊讶,但是当你考虑它时,这是有道理的。索引返回单个项目,但切片返回项目的子序列。因此,当你尝试索引不存在的值时,没有任何返回值。但是,当你在边界之外对序列进行切片时,你仍然可以返回空序列。

令人困惑的部分原因是字符串的行为与列表有所不同。查看对列表执行相同操作时会发生什么:

>>> [0, 1, 2, 3, 4, 5][3]
3
>>> [0, 1, 2, 3, 4, 5][3:4]
[3]

在这里,区别是显而易见的。对于字符串,结果似乎是相同的,因为在Python中,字符串外没有单个字符之类的东西。一个字符只是一个1个字符的字符串。



 类似资料:
  • 本文向大家介绍为什么子字符串切片索引超出范围在Python中起作用?,包括了为什么子字符串切片索引超出范围在Python中起作用?的使用技巧和注意事项,需要的朋友参考一下 在序列范围之外进行切片(至少对于内置片段而言)不会导致错误。索引返回单个项目,但切片返回项目的子序列。因此,当您尝试为不存在的值建立索引时,没有任何返回值。但是当您在边界之外对序列进行切片时,您仍然可以返回空序列。例如: 但是,

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 问题内容: 我猜我正在收到此错误,因为字符串正在尝试对值进行子字符串化。但是那部分不能消除这个问题吗? 这是Java代码段: 我收到此错误: 问题答案: 我猜我正在收到此错误,因为字符串试图将Null值作为子字符串。但是“ .length()> 0”部分不能消除该问题吗? 不,在itemdescription为null时调用itemdescription.length()不会生成StringInd

  • 问题内容: 嗨,我编写了Java代码来查找由其他单词组成的最长单词。我的逻辑是从文本文件中读取单词列表,并将每个单词添加到一个数组中(在文本中,单词被排序,并且每行中只有一个单词)之后,我们检查数组中的每个元素是否具有其他元素作为子字符串。如果是这样,我们计算子字符串的数量。具有最大子串数的元素将是结果 当我给一个只有两个单词的文本文件时,代码正在运行。但是,当有两个以上的单词时,我将出现以下错误

  • 问题内容: 我目前正在从一本名为《 Python绝对入门》(第三版)的书中学习python。书中有一个练习,概述了一个子手游戏的代码。我遵循了这段代码,但是我在程序的中间不断返回错误。 这是导致问题的代码: 这也是它返回的错误: 有人可以帮助我解决出现的问题以及如何解决该问题吗? 编辑:我像这样初始化so_far变量: 问题答案: 您好像缩进得太多了。尝试这个:

  • 问题内容: 我正在编写一个打开文本文件并检查注释的程序。然后,它解析注释以检查某些单词。 错误im出现在以下while循环中,该循环检查是否当前行以空格或除’/’以外的其他字符开头,如果那里存在非反斜杠字符,则while循环移至下一行并检查再次。一旦while循环满足其要求并中断程序崩溃,我将收到以下输出错误。 这是有问题的代码示例 谢谢你的帮助。我确定这是一个简单的错误,但我只是看不到它。 问题