代码:
digits2 = digits[0]
for d in digits[1:]:
if digits2[-1] != d:
digits2 += d
性能
C:\samples\soundex\stage2>python soundex2c.py
Woo W000 12.6070768771
Pilgrim P426 14.4033353401
Flingjingwaller F452 19.7774882003
问自己几个问题:每次循环都用digits[-1],高效吗?
用list索引高效吗?怎样更高效的维护每个变量的上一个digit?
优化代码2:
digits2 = ''
last_digit = ''
for d in digits:
if d != last_digit:
digits2 += d
last_digit = d
性能
C:\samples\soundex\stage3>python soundex3a.py
Woo W000 11.5346048171
Pilgrim P426 13.3950636184
Flingjingwaller F452 18.6108927252
下面纯属翻译,有点不明白
为什么上述代码没有更快。(不是快了挺多的吗。)在Python中,用list的索引(index)相当的快。重复读取digit2[-1]
完全没有问题。另一方面:手动维护每个变量的最后一个digit意味着对于我们存储的每个digit都有两次赋值操作(原文:
means we have two variable assignments for each digit we're storing) (two variable assignments 可能是其他什么意思吧),清除了我们可能在去除list查询中获得的小小优化。(which wipes
out any small gains we might have gotten from eliminating the list lookup)
优化代码3
digits2 = "".join([digits[i] for i in range(len(digits))
if i == 0 or digits[i-1] != digits[i]])
性能
C:\samples\soundex\stage3>python soundex3b.py
Woo W000 14.2245271396
Pilgrim P426 17.8337165757
Flingjingwaller F452 25.9954005327
性能没有提升。
分享到:
相关推荐
原来是通过命令行下载的docx安装包还没有完全兼容python3,估计这个安装包还只兼容python 2(python2 和python3差别还是挺大的,虽然现在python 3出来很久了,但是不少三方库还没有更新),因此需要自己找一个兼容的包...
python-3.10.8 64位windows 安装包,直接双击安装即可,包内文件名为:python-3.10.8-amd64.exe
python-3.7.9-amd64.exe安装文件,win7/10系统直接安装
最近ubuntu14.04出了问题,pkg-catkin-pkg无法下载,我7月底重装了一次Ubuntu14.04,安装ros lidigo时报错,依赖python-catkin-pkg,但它不会被安装,我刚开始发现这个问题时试过换源,重装系统均不成功,后面去官方...
python-3.10.4-amd64.exe
python2.5--安装包--windows...........
Mac OS的Monterey版本可用的python2.7,官方版本,官方地址:https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg,转存于CSDN。
python-3.10.4-embed-amd64.zip:Python是一种动态解释型的编程语言。Python可以在Windows、UNIX、macOS等多种操作系统上使用,也可以在Java、.NET框架平台上使用。
最新版 python-3.9.0-amd64.zip最新版 python-3.9.0-amd64.zip最新版 python-3.9.0-amd64.zip
python-devel-2.7.5-34.el7.x86_64.zip
python-3.8.0-amd64.exe, python-windows平台,使用64位,exe安装包
其实pip list python-docx 安装不成功,安装一般就报错,主要原因是从官网的下载不稳定,而且慢,经常会断,只能先下下来,然后放到cmd所在的文件夹或者指定路径,pip list python-docx-0.8.10.tar.gz,很快就好了!
python-urlgrabber-3.9.1-11.el6.noarch.rpm
python-2.7.5-90.el7.x86_64.rpm
python-3.7.0-amd64 安装包
python-3.5.0-amd64.exe
OpenCV-Python-Toturial-中文版.pdf
python-3.7.3-amd64.exe Python 3.7.3 for Windows x64位 or 32位 Windows x86-64 executable installer MD5: a2b79563476e9aa47f11899a53349383 File Size: 26190920 请不要给我5星好评,因为好评会上涨下载积分!
rpm-python-4.11.3-40.el7.x86_64.rpm python-srpm-macros-3-32.el7.noarch.rpm python-setuptools-0.9.8-7.el7.noarch.rpm python-rpm-macros-3-32.el7.noarch.rpm libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm ...