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

* really *是Python中的默认切片索引是什么?

胡致远
2023-03-14
问题内容

从python文档docs.python.org/tutorial/introduction.html#strings:

切片索引具有有用的默认值。省略的第一索引默认为零,省略的第二索引默认为要切片的字符串的大小。

对于标准情况,这很有意义:

>>> s = 'mystring'
>>> s[1:]
'ystring'
>>> s[:3]
'mys'
>>> s[:-2]
'mystri'
>>> s[-1:]
'g'
>>>

到现在为止还挺好。但是,使用负值阶跃值似乎表明默认值略有不同:

>>> s[:3:-1]
'gnir'
>>> s[0:3:-1]
''
>>> s[2::-1]
'sym'

很好,如果步长为负,则默认为反向。省略的第一索引默认为要切片的字符串的大小,省略的第二索引默认为零:

>>> s[len(s):3:-1]
'gnir'

看起来不错!

>>> s[2:0:-1]
'sy'

哎呀 错过了那个“ m”。

然后是每个人最喜欢的字符串反向语句。甜蜜的是:

>>> s[::-1]
'gnirtsym'

然而:

>>> s[len(s):0:-1]
'gnirtsy'

切片永远不会在切片中包含第二个索引的值。我可以看到这样做的一致性。

因此,我想我开始了解slice在其各种排列中的行为。但是,我感到第二个索引有些特殊,并且负数步长的第二个索引的默认值实际上不能用数字来定义。

谁能简明地定义可以解释所提供示例的默认切片索引?文档将是一个巨大的优势。


问题答案:

实际上没有任何默认值。忽略的值将得到特殊处理。

但是,在每种情况下,碰巧忽略的值都与“无”完全相同。这意味着,除非你黑客攻击的解释(或使用parserast等模块),你可以假装默认值是无(递归的回答说),你会始终得到正确的答案。

引用的非正式文档不太准确-对于本教程要包含的内容而言,这是合理的。对于真实的答案,您必须转向参考文档。

对于2.7.3,“序列类型”描述了注释3、4和5中的切片。

对于[i:j]

…如果 被省略或者None,使用0。如果省略 jNone,请使用len(s)

对于[i:j:k]

如果省略 ijNone,它们将成为“结束”值(该结束取决于 k 的符号)。注意, k 不能为零。如果 k
None,则将其视为1

对于3.3,序列类型的措词与2.7.3完全相同。



 类似资料:
  • 问题内容: 我经常使用时髦的东西作为字典的键,因此,我想知道什么是正确的方法-这是通过为对象实现良好的哈希方法实现的。我知道这里提出的其他问题[是实现 hash的好方法,但我想了解默认值如何用于自定义对象,以及是否有可能依赖它。 我注意到可变项显然是不可哈希的,因为会引发错误……但是奇怪的是,自定义类是可哈希的: 那么,有人知道此默认哈希函数如何工作吗?通过了解这一点,我想知道: 如果我放置与字典

  • Swift中的切片是什么?它与数组有何不同? 从文档中可以看出,下标(范围)的类型签名是: 为什么不返回另一个而不是? 看起来我可以将一个片与一个数组连接起来: 但这会产生错误: 找不到接受所提供参数的“subscript”的重载 什么是切片?

  • 我正在使用JAXP XSLT API(javax.xml.transform)来转换xml文件。 TransformerFactory的javadoc表示:它使用以下有序查找过程来确定要加载的TransformerFactory实现类: 使用javax。xml。使改变TransformerFactory系统属性 使用JRE目录中的属性文件“lib/jaxp.properties”。此配置文件采用标

  • 问题内容: Swift中的切片是什么,它与数组有何不同? 从文档中,下标(Range)的类型签名为: 为什么不返回另一个而不是一个? 看起来我可以将切片与数组连接起来: 但这会产生错误: 无法找到接受提供的参数的“下标”的重载 什么是切片? 问题答案: 切片指向数组。当数组已经存在并且切片只能描述其所需部分时,再也没有必要制作另一个数组。 加法会导致隐式强制,因此可以正常工作。为了使您的作业正常进

  • 问题内容: Elasticsearch中的索引是什么?一个应用程序有多个索引还是只有一个索引?假设您为某些汽车制造商构建了一个系统。它涉及人员,汽车,零件等。您是否有一个名为制造商的索引,或者您有一个人的索引,一个用于汽车的索引和一个用于零备件的索引?有人可以解释吗? 问题答案: 很好的问题,答案比人们期望的要细腻得多。您可以将索引用于几种不同的目的。 关系指标 最简单,最熟悉的布局将克隆您从关系

  • 问题内容: 什么是SQL中的 索引 ?您可以解释或参考以清楚地理解吗? 我应该在哪里使用索引? 问题答案: 索引用于加速数据库中的搜索。MySQL在此主题上有一些不错的文档(也与其他SQL Server相关):http : //dev.mysql.com/doc/refman/5.0/en/mysql- indexes.html 索引可用于有效地查找与查询中某一列匹配的所有行,然后仅遍历表的该子集