擅长:python、mysql、java
<p>在本例中,您可以避免整个<code>if</code>/<code>elif</code>/<code>else</code>的混乱,因为您的条件可以由从<code>i</code>和<code>j</code>值直接计算到字典中来代替。在</p>
<pre><code>for i in range(first_number):
horizontal_third = i * 3 // first_number
for j in range(second_number):
if pixel_is_black(i, j): # I assume this depends on the coordinates in some way
vertical third = j * 3 // second_number
key = str(horizontal_third * 3 + vertical_third + 1) # use int keys? zero-index?
switch[key] = True
</code></pre>
<p>注意,给一些变量起一个更有意义的名字可能是个好主意。<code>first_number</code>可能变成{<cd7>},而{<cd8>}可能变成{<cd9>}(反之亦然),而{<cd4>}和{<cd5>}的值可以变成{<cd12>}和{<cd13>}(尽管后两个不那么糟糕,因为{<cd4>}和{<cd5>}是非常传统的循环变量)。在</p>
<p>如果您愿意对<code>switch</code>稍作修改以进一步提高性能,那么可以用一个列表替换字典,使用从零开始的整数作为索引。您只需要从<code>key</code>计算中删除<code>+ 1</code>和<code>str</code>调用(我还将重命名变量<code>index</code>)。可以使用<code>switch = [False] * 9</code>初始化列表。在</p>