如果区域设置不受关注,在Python中对字符串进行排序的最快方法是
发布时间:2020-12-16 22:29:01 所属栏目:Python 来源:网络整理
导读:我试图找到一种快速的方法来在Python中对字符串进行排序,并且语言环境是一个无关紧要的问题,即我只想根据底层字节对词汇进行排序.这非常适合基数排序.这是我的MWE import numpy as npimport timeit# randChar is workaround for MemoryError in mtrand.Rando
我试图找到一种快速的方法来在Python中对字符串进行排序,并且语言环境是一个无关紧要的问题,即我只想根据底层字节对词汇进行排序.这非常适合基数排序.这是我的MWE
你可以看到它需要6.8秒,这比下面的R的基数排序慢近10倍.
我知道Python的.sort()不使用基数排序,是否有某个实现允许我像R一样对字符串进行排序? AFAIK既有R又有Python“实习”字符串,因此R中的任何优化也可以在Python中完成. “基数排序字符串python”的顶级谷歌结果是this gist,在我的测试数组上排序时产生错误. 最佳答案
R实际上是所有字符串,这意味着它有一个“全局字符缓存”,它充当了程序使用的所有字符串的中心字典.这有其优点:数据占用的内存较少,某些算法(如基数排序)可以利用这种结构来实现更高的速度.对于诸如示例中的情况尤其如此,其中唯一字符串的数量相对于向量的大小较小.另一方面,它也有它的缺点:全局字符缓存阻止对字符数据的多线程写访问.
在Python中,afaik只有字符串文字被实习.例如:
在实践中,这意味着,除非您将数据直接嵌入到程序文本中,否则不会实现任何内容. 现在,对于您的原始问题:“在python中对字符串进行排序的最快方法是什么?”使用python datatable包可以实现与R相当的非常好的速度.这是从一组1024中随机选择的N =10?字符串的基准测试:
哪个产生:
R(v3.4.2)中的相同数据集:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |