相关疑难解决方法(0)

什么时候计算python对象的哈希值,为什么-1的哈希值不同?

这个问题后,我很想知道什么时候是python对象的哈希计算

  1. 在一个实例的__init__时候,
  2. 第一次__hash__()叫,
  3. 每次都__hash__()被称为,或
  4. 我可能会失踪的任何其他机会?

这可能会根据对象的类型而有所不同吗?

为什么hash(-1) == -2其他整数与哈希相等?

python hash

22
推荐指数
2
解决办法
3200
查看次数

Python中'is'运算符的语义是什么?

is操作员如何确定两个对象是否相同?它是如何工作的?我找不到记录.

python

10
推荐指数
3
解决办法
8585
查看次数

比较两个字符串是否相等的超级快速方法

显然,在Python中检查两个字符串是否相等你可以这样做:

\n\n

"hello word" == "hello world"

\n\n

但是,如果您要比较很长的字符串(超过 100 万个字符)怎么办?python 中是否有内置方法或任何库可以更快地完成此操作;也许利用 Karp\xe2\x80\x93Rabin 算法或类似的算法?

\n\n

或者,在幕后, stringA == stringB 实际上是最快的方法吗?

\n

python

6
推荐指数
1
解决办法
6997
查看次数

从python中的列表中获取哈希的最快方法

我有一长串的整数,我想把它变成MD5哈希.最快的方法是什么?我尝试了两个选项,两者都相似.只是想知道我是否错过了一种明显更快的方法.

import random
import hashlib
import cPickle as pickle

r = [random.randrange(1, 1000) for _ in range(0, 1000000)]

def method1(r):
    p = pickle.dumps(r, -1)
    return hashlib.md5(p).hexdigest()

def method2(r):
    p = str(r)
    return hashlib.md5(p).hexdigest()

def method3(r):
    p = ','.join(map(str, r))
    return hashlib.md5(p).hexdigest()
Run Code Online (Sandbox Code Playgroud)

然后在iPython中计时:

timeit method1(r)
timeit method2(r)
timeit method3(r)
Run Code Online (Sandbox Code Playgroud)

给我这个:

In [8]: timeit method1(r)
10 loops, best of 3: 68.7 ms per loop

In [9]: timeit method2(r)
10 loops, best of 3: 176 ms per loop

In [10]: timeit method3(r)
1 …
Run Code Online (Sandbox Code Playgroud)

hash performance md5 list python-2.7

5
推荐指数
1
解决办法
4037
查看次数

标签 统计

python ×3

hash ×2

list ×1

md5 ×1

performance ×1

python-2.7 ×1