python如何比较两个python 字符串比较是否为字母异位,也就是包含字母一样,只是顺序不同

python获取字母在字母表对应位置的几种方法及性能对比较 - 简书
python获取字母在字母表对应位置的几种方法及性能对比较
python获取字母在字母表对应位置的几种方法及性能对比较
某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目
其中一步解题步骤就是需要把字母换算成字母表中对应的顺序。
获取字母在字母表对应位置的方法,最容易想到的实现的是:
使用str.index 或者str.find方法:
In [137]: "ABC".index('B')
Out[137]: 1
In [138]: "ABC".index('B')+1
Out[138]: 2
#或者在前面填充一个字符,这样index就直接得到字母序号:
In [139]: "_ABC".index("B")
Out[139]: 2
我还想到把字母表转成list或者tuple再index,性能或者会有提高?
或者把字母:数字 组成键值存到字典中是个好办法?
前两天我还自己顿悟到了一个方法:
In [140]: ord('B')-64
Out[140]: 2
ord 和chr 都是python中的内置函数,ord可以把ASCII字符转成对应在ASCII表中的序号,chr则是可以把序号转成字符串。
大写字母中在表中是从65开始,减掉64刚好是大写字母在表中的位置。
小写字母是从97开始,减于96就是对应的字母表位置。
哪种方法可能在性能上更好?我写了代码来测试一下:
az = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
_az = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ"
azlist = list(az)
azdict = dict(zip(az,range(1,27)))
text = az*1000000 #这个是测试数据
#str.find和str.index的是一样的。这里就没必要写了。
def azindexstr(text):
for r in text:
az.index(r)+1
def _azindexstr(text):
for r in text:
_az.index(r)
def azindexlist(text):
for r in text:
azlist.index(r)
def azindexdict(text):
for r in text:
azdict.get(r)
def azindexdict2(text):
for r in text:
def azord(text):
for r in text:
def azand64(text):
for r in text:
把上面的代码复制粘贴到ipython ,然后用魔法函数%timeit测试各个方法的性能。
ipython 是一个python交互解释器,附带各种很实用的功能,比如文本主要到的%timeit 功能。
请输入pip install ipython安装.
以下是我测试的结果数据:
In [147]: %timeit azindexstr(text)
1 loop, best of 3: 9.09 s per loop
In [148]: %timeit _azindexstr(text)
1 loop, best of 3: 8.1 s per loop
In [149]: %timeit azindexlist(text)
1 loop, best of 3: 17.1 s per loop
In [150]: %timeit azindexdict(text)
1 loop, best of 3: 4.54 s per loop
In [151]: %timeit azindexdict2(text)
1 loop, best of 3: 1.99 s per loop
In [152]: %timeit azord(text)
1 loop, best of 3: 2.94 s per loop
In [153]: %timeit azand64(text)
1 loop, best of 3: 4.56 s per loop
从结果中可见到list.index速度最慢,我很意外。另外如果list中数据很多,index会慢得很严重。
dict[r]的速度比dict.get(r)的速度快,但是如果是一个不存在的键dict[r]会报错,而dict.get方法不会报错,容错性更好。
ord(r)-64的方法速度不错,使用起来应该也是最方便,不用构造数据。
日 20:31:19 codegay
ASCII对照表
IPython Tips and Tricks
其实你有改变世界的力量,你只是不知道.
来源:黑暗圣堂武士 python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://projecteuler.net/problem=42 其中一步解题...
python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正和完善,仅作个人笔记所用,无商业用途。如需获取更好的体验,请移步python学习笔记 python基础dictstr切片迭代列表生成式生成器(generator...
Python String 方法详解 官网文档地址:https://docs.python.org/3/library/stdtypes.html#string-methods 官网文档里的所有String的方法都在下面,基于 Python 3.X 版本。花了一天的时间学习...
记叙文写作指导 1、记叙文的文体特点及其分类 记叙文是通过记述人物、事件来表明作者思想感情的一种文体。一般说来,记叙文分简单记叙文和复杂记叙文两种。前者只记一人一事,篇幅比较短小; 后者所记的人物或事件不限于一个或一件,写作方法也比较复杂。记叙文是包含面很广的文体,童话、故...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
三顺的一技之长 三顺不是她的真名,是她的偶像。对,就是那个韩剧中年纪和肥肉都一大把却仍旧迎来人生巅峰的糕点师金三顺。你可以理解为她也期待着某天如金三顺一般,拿下烤箱手套,推开后厨小门,一抬眼就是男一号。但她觉得男一号是人家的,她自己想要金三顺的独立和明快,还有一技之长。 一...
和你走在牡丹江医学院的校园里,现在是大三即将离开学校去实习,无论大学如何去拼搏,三年是很快就会过完的。 看见校园里那些细小而又伟大的生命,随着春夏秋冬的转变,它们消失又出现,珍惜眼前,顺其自然
春 牡医校园里春雨过后,药学楼后花园的桃花 为了拍这张照...
采桑子 严霜拥絮频惊起,扑面霜空。斜汉朦胧,冷逼毡帷火不红。 香篝翠被浑闲事,回首西风。何处疏钟,一穗灯花似梦中。
——纳兰性德
刻骨铭心最简单是 连那首歌也印上了你的痕迹 我不再敢听
1.() Q:在睡觉以前找机会使用一次「如果……,……is the least of your worries」这句套话吧。 A: ①如果你因为褚老师的“下等人”言论把自己气坏了, 是不是下等人 is the least of your worries. ②...python编程序,从函数输入一个字符串,将字符串中的数字删除,并将大写字母改为小写,最后的结果在_百度知道
python编程序,从函数输入一个字符串,将字符串中的数字删除,并将大写字母改为小写,最后的结果在
python编程序,从函数输入一个字符串,将字符串中的数字删除,并将大写字母改为小写,最后的结果在函数中打印。例如输入Abc123De4f,则输出abcdef。跪谢
我有更好的答案
import&redef&fun(s):&&&&return&re.sub(r'([\d]+)','',s).lower()print&fun('Abc123De4f')
为您推荐:
其他类似问题
大写字母的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。python字符串字串查找 find和index方法 - 为程序员服务
为程序员服务
python字符串字串查找 find和index方法
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法。
1 find()方法:查找子字符串,若找到返回从0开始的下标值,若找不到返回-1
info = 'abca'
print info.find('a')##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
info = 'abca'
print info.find('a',1)##从下标1开始,查找在字符串里第一个出现的子串:返回结果3
info = 'abca'
print info.find('333')##返回-1,查找不到返回-1
2 index()方法:
python 的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1
info = 'abca'
print info.index('a')
print info.index('33')
rfind和rindex方法用法和上面一样,只是从字符串的末尾开始查找。
您可能的代码
相关聚客文章
荣誉:2088
相关专栏文章python如何判断字符是中文还是英文字母_百度知道
python如何判断字符是中文还是英文字母
我有更好的答案
逐个字符用ord()判断ascii码a - z : 97 - 122A - Z : 65 - 90def is_english_char(ch):
if ord(ch) not in (97,122) and ord(ch) not in (65,90):
return False
return True上面函数可以辨别字符是否为英文字符
采纳率:82%
来自团队:
可以通过编码来区分。
引用xiangliangyu的回答:逐个字符用ord()判断ascii码a - z : 97 - 122A - Z : 65 - 90def is_english_char(ch):
if ord(ch) not in (97,122) and ord(ch) not in (65,90):
return False
return True上面函数可以辨别字符是否为英文字符
这个代码是错误的
1条折叠回答
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。python 判断是否含有数字,英文字符和汉字_百度知道
python 判断是否含有数字,英文字符和汉字
我有更好的答案
可以用字符串的方法.isalpha()判断字符串是否全部是英文字母,包含大小写,不包含数字和空格s = 'Hello there'for i in s.split(' '):
print i.isalpha()
为您推荐:
其他类似问题
python的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 python 字符串是字母 的文章

 

随机推荐