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

为什么str.count('')和len(str)给出不同的输出?

莫飞翮
2023-03-14
问题内容

查看以下代码,并请解释为什么该str.count('')方法和len(str)函数给出两个不同的输出。

a=''
print(len(a))
print(a.count(''))

输出:

0
1

问题答案:

str.count() 计算子字符串的非重叠出现次数:

返回substring sub 的不重叠出现的次数。

在字符串中恰好有一个这样的子字符串''出现的位置'':就在开头。因此计数 应该 返回1

一般来说,空字符串将匹配给定字符串中的 所有位置 ,包括开始和结束处的正确 位置 ,因此计数应 始终 为长度加1:

>>> (' ' * 100).count('')
101

这是因为空字符串被认为存在于字符串的所有字符之间。对于字符串长度2,有3个空字符串;开头是一个,两个字符之间是一个,结尾是一个。

是的,结果是不同的,而且它们是完全正确的。



 类似资料:
  • Java 中的字节长度为 8 位。一个

  • 参考这个答案,Lev说包括开始和停止索引,所以我尝试了这个: 但它们也不同。为什么啊? 有人能帮我吗?

  • <代码>car\U gear字段在数据库中填写为“stick”(斗杆)。在图像标记后,输出更改为“自动” 为什么结果是$car\u result1-

  • 问题内容: 令我惊讶的是,and 方法对于相同的输入字符串返回不同的结果。 我试图将传递给这两种方法。但是给我错误的输出,却给我正确的输出。为什么? 问题答案: API文档是您的朋友。 可能没有按照您的想法做: 当且仅当 由参数命名的 系统属性 存在并且等于字符串“ true” 时,才返回true 。 您可能正在寻找: 如果字符串参数不为null,并且忽略大小写,等于字符串“ true”,则返回的

  • 问题内容: 我正在使用具有Spring安全性的BCryptPasswordEncoder。我的期望是,对于相同的输入,我将始终获得相同的输出。但是对于相同的输入,我得到不同的输出。您可以使用以下代码段对其进行测试: 输出:$ 2a $ 10 $ cYLM.qoXpeAzcZhJ3oXRLu9Slkb61LHyWW5qJ4QKvHEMhaxZ5qCPi 输出2:$ 2a $ 10 $ KEvYX9y

  • 我正在使用带有Spring Security的BCryptPasswordEncoder。我的期望是,对于相同的输入,我总是得到相同的输出。但是对于相同的输入,我得到不同的输出。您可以使用下面的代码片段对其进行测试: 输出:$2A$10$CYLM.QOXPEAZCZHJ3OXRLU9SLKB61LHYWW5QJ4QKVHEMHAXZ5QCPI 输出2:$2A$10$kevyx9yjj0f1x3wl