8
Q
信念傳播實施
A
回答
2
這裏有一個建議:創建一個閉包,它接受包含初始變量及其各自值的映射作爲第一次計算的鍵值對。同一個閉包返回一個內部函數,該函數接受另一個映射,其餘的變量和值用於最終計算。
因此定義一個閉包,其中第一部分計算是在外部函數中完成的。根據你的鏈接,部分計算是一個總和,但我想你會計算概率的產品。內部函數可以作爲一個自由變量訪問部分和。當您使用包含其餘變量 - 值對的映射調用它時,計算就完成了。
您還可以在外部函數中定義一個集合來保存第一次計算中使用的所有變量。然後允許內部函數以自由變量的形式訪問這個集合。這將確保在最終計算中排除第一次計算中遇到的任何可變關鍵字的值。
所有這些如下所示。
def f1(map1):
# set to contain seen variables as keys
seen_keys = set()
computed_val1 = 0.0
for key in map1.keys():
val = map1[key]
computed_val1 += val
# remember keys already in 1st computed
seen_keys.add(key)
def f2(map2):
computed_val2 = computed_val1
for key2 in map2.keys():
# omit keys in first computation
if key2 in seen_keys:
continue
val2 = map2[key2]
computed_val2 += val2
return computed_val2
return f2
if __name__ == '__main__':
partial_map = {'factor1': 1, 'factor2': 2}
func = f1(partial_map)
remaining_map1 = {'factor3': 3}
answer1A = func(remaining_map1)
print "Answer after using partial and remaining maps = ", answer1A
# complete the partial map with factor3 to show that
# the return function will ignore variables already seen in 1st computaion
partial_map['factor3'] = 3
answer1B = func(partial_map)
print "Answer with completed map to same func = ", answer1B
# Compute remaining map with different value for factor 3
remaining_map2 = {'factor3': 15}
answer2 = func(remaining_map2)
print "Answer with different second map = ", answer2
相關問題
- 1. 彈性傳播的實施
- 2. 紀念品實施VBA
- 3. 一個簡單的標準信念傳播
- 4. 免費WPF輪播實施
- 5. 實施的提示信息
- 6. 信用卡系統實施?
- 7. 實施信號器組
- 8. 使用GradientDescentOptimizer時在TensorFlow中實施反向傳播?
- 9. 我有實施反向傳播神經網絡
- 10. 在DBN中實施反向傳播時的奇怪行爲
- 11. 基本後向傳播實施不起作用
- 12. 如何使此輪播實施更好?
- 13. VAST 2.0插播和疊加實施
- 14. 實施滑動輪播的問題
- 15. Deezer網站MP3播放器的實施
- 16. 停止短信傳播
- 17. 子POPEN:信號不傳播
- 18. 我可以在Firebase中實施渠道概念嗎?
- 19. 如何在SuiteCRM中實施「區域」概念
- 20. 如何實施JSON流式概念以避免OutOfMemory錯誤?
- 21. 實施OpenID客戶詳細信息
- 22. 如何發信號「尚未實施」?
- 23. 短信聚合實施/應用
- 24. JPA實體在實施物料清單概念時發生錯誤
- 25. 概念實例
- 26. 播放框架概念
- 27. 實施twitter引導傳送帶v2.3.2
- 28. 用卡夫卡實施傳奇
- 29. 敏捷上傳Wordpress的實施
- 30. 實施