请看下面的代码,并解释为什么str.count('')
方法和len(str)
函数给出两个不同的输出。为什么str.count('')和len(str)给出不同的输出?
a=''
print(len(a))
print(a.count(''))
输出:
0
1
请看下面的代码,并解释为什么str.count('')
方法和len(str)
函数给出两个不同的输出。为什么str.count('')和len(str)给出不同的输出?
a=''
print(len(a))
print(a.count(''))
输出:
0
1
str.count()
计数的子串的非重叠出现:
返回非重叠出现串子的数目。
恰好有一个这样的地方,字符串''
出现在字符串''
:正好在开头。所以计数应该返回1
。一般来说,空字符串会匹配在的所有位置给定的字符串中,包括正确的开始和结束,因此计数应始终是长度加1:
>>> (' ' * 100).count('')
101
这是因为空字符串被认为存在于一个字符串的所有字符之间;所以对于字符串长度2,有3个空字符串;一个在开始时,一个在两个角色之间,一个在结尾。
所以,是的,结果是不同的,它们是完全正确的。
我不知道,如果“恰好有一个这样的地方,子串''在字符串''中出现:在开始处右边。“是正确的方式来表达它。 CPython似乎特殊情况下的'len(substr)== 0'和[return'len(str)+ 1'](https://github.com/python/cpython/blob/master/Objects/stringlib/count .h#L16) –
@ JimFasarakis-Hilliard:我不确定你是否已经完全阅读了我的答案,但我确切地说明了代码的作用。 –
对于我来说,在传递空字符串时应该返回什么'count()是相当不清楚的。如何计算出现次数是一个惯例问题,我认为为这种情况抛出一个“ValueError”是合理的。 “非重叠”意味着两个出现点的交集是空字符串,因此如果在索引0处出现两个空字符串,它们实际上是非重叠的。 –
为什么*应该*他们给出相同的输出?空字符串中有一个空字符串。一个空字符串的长度为0. –
那么,为什么a =''<---(这里我给了两个空格)是给3个空字符串,长度是2?感谢您的回复@MartijnPieters – liberal
因为在开始与第一个空间之间有一个空字符串,第一个与第二个空间之间有一个空字符串,最后一个空格与结束之间有一个空字符串。 –