有没有更好的方法来为 Python 实现通用的“变化”习语?

问题描述

“重复直到值停止变化”这句话在算法中很常见,在实际编程语言中的实现总是感觉有点笨拙。我一直在使用以下通用函数来清理我的算法,其中清晰胜过效率:

def changing(o):
    ret = getattr(changing,'last_value_',None) != o
    changing.last_value_ = copy.deepcopy(o)
    return ret

以如下方式使用:

first = collections.defaultdict(set)
while changing(first):
    for left,right in GRAMMAR:
        right = right[0]
        if right in T:
            first[left].add(right)
        else:
            first[left] = first[left] | first[right]

很明显,如果第一个值是 None,这是非常低效的,并且如果我们提前知道数据结构及其变化方式,就可以减少蛮力完成。

但是在 Python 中是否有更好的方法来实现“这个值与另一个值明显不同”?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)