python字符串过滤性能比较5种方法比较
总共比较5种方法。直接看代码:
import random import time import os import string base = string.digits+string.punctuation total = 100000 def loop(ss): """循环""" rt = '' for c in ss: if c in '0123456789': rt = rt + c return rt def regular(ss): """正则表达式""" import re rt = re.sub(r'\D', '', ss) return rt def filter_mt(ss): """函数式""" return filter(lambda c:c.isdigit(), ss) def list_com(ss): """列表生成式""" isdigit = {'0': 1, '1': 1, '2': 1, '3': 1, '4': 1, '5':1, '6':1, '7':1, '8':1, '9':1}.has_key return ''.join([x for x in ss if isdigit(x)]) def str_tran(ss): """string.translate()""" table = string.maketrans('', '') ss = ss.translate(table,string.punctuation) return ss if __name__ == '__main__': lst = [] for i in xrange(total): num = random.randrange(10, 50) ss = '' for j in xrange(num): ss = ss + random.choice(base) lst.append(ss) s1 = time.time() map(loop,lst) print "loop: ",time.time() - s1 print '*'*20 s1 = time.time() map(regular, lst) print "regular: ", time.time() - s1 print '*' * 20 s1 = time.time() map(str_tran, lst) print "str_tran: ", time.time() - s1 print '*' * 20 s1 = time.time() map(filter_mt, lst) print "filter_mt: ", time.time() - s1 print '*' * 20 s1 = time.time() map(list_com, lst) print "list_com: ", time.time() - s1
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
我有一个字符串和一个int,让我们说:and。查看它们是否相同的最快方法是什么,or(或者有更快的方法吗?)? 这是Integer的源代码。parseInt和String。等于
我试图评估比较两个字符串是否会随着它们的长度增加而变慢。我的计算表明比较字符串应该需要一个摊销常数时间,但我的Python实验产生了奇怪的结果: 下面是字符串长度(1到400)与时间(毫秒)的关系图。自动垃圾收集已禁用,并且gc。在每次迭代之间运行collect。 我每次比较100万随机字符串,计算匹配如下。这个过程重复50次,然后取所有测量时间的最小值。 什么可能解释长度64左右突然增加? 注意
问题内容: 我有一个String和一个int,可以说:和。什么是如果它们是相同的,看到的最快的方法还是(或者是有一个更快的方法?)? 这是Integer.parseInt和String.equals的源代码 问题答案: 会比 首先将num转换为O(n)的字符串,其中n是数字中的位数。然后它将再次进行字符串连接O(n),然后最终进行字符串比较。在这种情况下,字符串比较将是另一个O(n)-n是数字中的
本文向大家介绍浅析Python 中几种字符串格式化方法及其比较,包括了浅析Python 中几种字符串格式化方法及其比较的使用技巧和注意事项,需要的朋友参考一下 起步 在 Python 中,提供了很多种字符串格式化的方式,分别是 %-formatting、str.format 和 f-string 。本文将比较这几种格式化方法。 %- 格式化 这种格式化方式来自于 C 语言风格的 sprintf 形
问题内容: 我注意到我正在编写的Python脚本表现得很松散,并将其追溯到无限循环,其中循环条件为。在调试器中运行它,结果发现那条线实际上是。当我将其更改为!=’‘而不是时,它工作正常。 另外,即使比较或值,通常还是最好还是默认使用吗?我一直喜欢使用,因为我发现它在美学上更令人愉悦和pythonic(这就是我陷入这个陷阱的方式…),但是我想知道是否打算仅在你关心找到两个对象时才保留它?具有相同ID
问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran