我正在计算两个字符串之间的汉明距离,其中Hamming(A,B) == Hamming(B,A)
函数签名为
@lru_cache
def Hamming(A:str,B:str)->int:
...如何修改@lru_cache或函数,以便在索引到缓存时忽略参数顺序?
发布于 2021-02-08 17:11:06
您可以插入一个额外的函数调用,该函数调用可预测地重新排列参数:
def Hamming(A: str, B: str) -> int:
if B < A:
A, B = B, A
return _Hamming(A, B)
@lru_cache
def _Hamming(A, B):
...发布于 2021-02-08 17:54:12
另一种选择:
from cachetools import cached
from cachetools.keys import hashkey
@cached(cache={}, key=lambda A, B: hashkey((A, B) if A < B else (B, A)))
def Hamming(A: str, B: str) -> int:
...或者一般情况下:
@cached(cache={}, key=lambda *args: hashkey(tuple(sorted(args))))
def Hamming(A: str, B: str) -> int:
...https://stackoverflow.com/questions/66098644
复制相似问题