问题描述
“重复直到值停止变化”这句话在算法中很常见,在实际编程语言中的实现总是感觉有点笨拙。我一直在使用以下通用函数来清理我的算法,其中清晰胜过效率:
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 (将#修改为@)