字符串里的缝隙是什么在Python中求一个字符串里,某子字符(串)出现的次数。
大家都懂得使用 count() 函数,比如下面几个常规例子:
- >>> "aabb".count("a")
- 2
- >>> "aabb".count("b")
- 2
- >>> "aabb".count("ab")
- 1
复制代码
但是如果我想计算空字符串的个数呢?
不是应该返回 0 吗?怎么会返回 5?
实际上,在 Python 看来,两个字符之间都是一个空字符,通俗的说就是缝隙。
理解了这个“缝隙” 的概念后,以下这些就好理解了。
- >>> (" " * 10).count("")
- 11
- >>> "" in ""
- True
- >>> "" in "M"
- True
复制代码
x 与 +x 等价吗?在大多数情况下,这个等式是成立的。
- >>> n1 = 10086
- >>> n2 = +n1
- >>>
- >>> n1 == n2
- True
复制代码
什么情况下,这个等式会不成立呢?
由于Counter的机制,+ 用于两个 Counter 实例相加,而相加的结果如果元素的个数 <= 0,就会被丢弃。
- >>> from collections import Counter
- >>> ct = Counter('abcdbcaa')
- >>> ct
- Counter({'a': 3, 'b': 2, 'c': 2, 'd': 1})
- >>> ct['c'] = 0
- >>> ct['d'] = -2
- >>>
- >>> ct
- Counter({'a': 3, 'b': 2, 'c': 0, 'd': -2})
- >>>
- >>> +ct
- Counter({'a': 3, 'b': 2})
复制代码
+= 不等同于=+对列表 进行+= 操作相当于 extend,而使用 =+ 操作是新增了一个列表。
因此会有如下两者的差异。
- # =+
- >>> a = [1, 2, 3, 4]
- >>> b = a
- >>> a = a + [5, 6, 7, 8]
- >>> a
- [1, 2, 3, 4, 5, 6, 7, 8]
- >>> b
- [1, 2, 3, 4]
- # +=
- >>> a = [1, 2, 3, 4]
- >>> b = a
- >>> a += [5, 6, 7, 8]
- >>> a
- [1, 2, 3, 4, 5, 6, 7, 8]
- >>> b
- [1, 2, 3, 4, 5, 6, 7, 8]
复制代码
|