Python *中的默认切片索引是什么*?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python *中的默认切片索引是什么*?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1698字,纯文字阅读大概需要3分钟。
内容图文
从python文档docs.python.org/tutorial/introduction.html#strings:
Slice indices have useful defaults; an omitted first index defaults to zero, an omitted second index defaults to the size of the string being sliced.
对于标准情况,这很有意义:
>>> 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'
哎呦.错过了’我’.
然后是每个人最喜欢的字符串反向声明.它很甜蜜:
>>> s[::-1]
'gnirtsym'
然而:
>>> s[len(s):0:-1]
'gnirtsy'
切片永远不会包含切片中第二个索引的值.我可以看到这样做的一致性.
所以我想我开始理解切片在各种排列中的行为.但是,我感觉第二个索引有点特殊,并且负步骤的第二个索引的默认值实际上不能用数字来定义.
任何人都可以简洁地定义可以解释所提供示例的默认切片索引吗?文档将是一个巨大的优势.
解决方法:
实际上没有任何默认值;省略的值是专门处理的.
但是,在每种情况下,省略的值恰好以与None完全相同的方式处理.这意味着,除非您正在攻击解释器(或使用解析器,ast等模块),否则您可以假装默认值为None(如递归的答案所示),并且您将始终获得正确的答案.
引用的非正式文档并不十分准确 – 这对于那些本来应该成为教程一部分的内容来说是合理的.对于真正的答案,您必须转向参考文档.
对于2.7.3,Sequence Types描述了在注释3,4和5中进行切片.
对于[i:j]:
… If i is omitted or
None
, use0
. If j is omitted orNone
, uselen(s)
.
对于[i:j:k]:
If i or j are omitted or
None
, they become “end” values (which end depends on the sign of k). Note, k cannot be zero. If k isNone
, it is treated like1
.
对于3.3,Sequence Types具有与2.7.3完全相同的措辞.
内容总结
以上是互联网集市为您收集整理的Python *中的默认切片索引是什么*?全部内容,希望文章能够帮你解决Python *中的默认切片索引是什么*?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。