NIl*_*rma 0 python string conceptual concept
我试图理解string.count的功能基本上它的文档定义是
string.count(s,sub [,start [,end]])
返回字符串s [start:end]中substring sub的(非重叠)出现次数.开始和结束的默认值以及负值的解释与切片的默认 值相同.
现在最后一行的确切含义实际上是大胆的.我做了一些关于这个函数的随机实验
In [19]: a
Out[19]: 'ab'
In [23]: string.count(a,'ab'[1:3])
Out[23]: 1
In [24]: string.count(a,'ab'[1:1])
Out[24]: 3
In [25]: string.count(a,'ab'[-1:1])
Out[25]: 3
In [26]: string.count(a,'ab'[-1:0])
Out[26]: 3
In [27]: string.count(a,'ab'[1:4])
Out[27]: 1
In [28]: string.count(a,'ab'[1:100])
Out[28]: 1
In [29]: string.count(a,'ab'[100:100])
Out[29]: 3
In [30]: string.count(a,'ab'[:])
Out[30]: 1
In [31]: string.count(a,'a'[:])
Out[31]: 1
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释我为什么有时候我得到的结果是1,为什么有时候3这里.总的来说,我需要了解这个功能是如何工作的?
每当你看到一个3结果时,第二个参数是空字符串 - 你通过使用奇怪的切片隐藏这个facte.空字符串被认为是在位置出现0:0,1:1而2:2在这个例子中,所以有三个事件.通常,string.count(s, "")(或等效地s.count(""))将返回len(s) + 1.
为了解释这个结果是如何产生的,这里是一个(不是非常有效的)示例实现string.count():
def count(s, sub):
result = 0
for i in range(len(s) + 1 - len(sub)):
result += (s[i:i + len(sub)] == sub)
return result
Run Code Online (Sandbox Code Playgroud)