我想了解什麼是最有效的方式來限制我的循環範圍。這裏的想法是我的j被輸入到一個需要事先確定的函數中。使循環範圍有條件的最佳方法?
我正在處理的問題的一個約束是j必須總是小於i。
max_value = None
for i in range(1,1499):
for j in range(1,1499):
if i > j:
candidate = some_function(i,j)
if candidate > max_value:
max_value = candidate
現在我的i> j聲明在這裏沒有必要,因爲最好的解決方案總是會在i> j的地方。但是,因爲我知道這一點,所以我想利用這個來限制我的範圍,並停止計算更多的循環。
什麼是最好的方式去做這件事?我在想這件事可能會起作用:
max_value = None
for i in range(1,1499):
for j in range(1,i):
candidate = some_function(i,j)
if candidate > max_value:
max_value = candidate
還有其他想法或建議嗎?實際的循環問題比這個要大得多,所以速度是一個考慮因素,任何建議都是值得歡迎的!
「可能工作」?你試過了嗎? – BartoszKP 2014-10-28 23:33:43
修復縮進後,它將起作用(在「if」行末尾沒有冒號,下一行應該縮進)。另外,如果你使用Python <3,使用'xrange()'也應該加速。 – 2014-10-28 23:35:46
除了上面所有相關的評論外,請嘗試。 'timeit'應該這樣做。 https://docs.python.org/2/library/timeit.html – 2014-10-28 23:38:48