前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >空字符串计数、让字典可排序...Python冷知识(五)

空字符串计数、让字典可排序...Python冷知识(五)

作者头像
AI科技大本营
发布2019-05-15 16:33:03
5590
发布2019-05-15 16:33:03
举报

本文转载自Python编程时光(ID: Python-Time) 空字符串计数

求一个字符串里,某子字符(串)出现的次数。在Python中使用 count() 函数,就可以轻松实现。

比如下面几个常规例子

代码语言:javascript
复制
>>> "aabb".count("a")
2
>>> "aabb".count("b")
2
>>> "aabb".count("ab")
1

但是如果使用空字符串呢,你可能想不到会是这样的结果。

代码语言:javascript
复制
>>> "aabb".count("")
5

具体原因,我不敢妄下结论。

由此我还衍生出另一个想法,实验了下。不知道空字符串,是一种什么样的存在,难道字母与字母之间 “缝隙” 也算吗?

代码语言:javascript
复制
>>> "" in ""
True
>>> "" in "ab"
True

有兴趣的可以去看看CPython的源码实现。

负负得正

从初中开始,我们就开始接触了负数 这个概念。知道了负负得正,这和武侠世界里的以毒功毒,有点神似。

Python 作为一门高级语言,它的编写符合人类的思维逻辑,这其中也包括负负得正这个思想。

代码语言:javascript
复制
>>> 5-3
2
>>> 5--3
8
>>> 5+-3
2
>>> 5++3
8
>>> 5---3
2

数值与字符串比较

在 Python2 中,数字可以与字符串直接比较。结果是数值永远比字符串小。

代码语言:javascript
复制
>>> 100000000 < ""
True
>>> 100000000 < "ming"
True

但在 Python3 中,却不行。

代码语言:javascript
复制
>>> 100000000 < ""
TypeError: '<' not supported between instances of 'int' and 'str'

循环中的局部变量泄露

在Python 2中x的值在一个循环执行之后被改变了。

代码语言:javascript
复制
# Python2
>>> x = 1
>>> [x for x in range(5)]
[0, 1, 2, 3, 4]
>>> x
4

不过在Python3 中这个问题已经得到解决了。

代码语言:javascript
复制
# Python3
>>> x = 1
>>> [x for x in range(5)]
[0, 1, 2, 3, 4]
>>> x
1

让字典可排序

字典不可排序的思想,似乎已经根深蒂固。

代码语言:javascript
复制
# Python2.7.10
>>> mydict = {str(i):i for i in range(5)}
>>> mydict
{'1': 1, '0': 0, '3': 3, '2': 2, '4': 4}

在 Python3 中字典已经是有序的。

代码语言:javascript
复制
# Python3.6.7
>>> mydict = {str(i):i for i in range(5)}
>>> mydict
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 负负得正
  • 数值与字符串比较
  • 循环中的局部变量泄露
  • 让字典可排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档