<p>有几种方法可以做到这一点:</p>
<h2>简单的方法:一个哨兵变量</h2>
<pre><code>n = L[0][0]
m = len(A)
found = False
for i in range(m):
if found:
break
for j in range(m):
if L[i][j] != n:
found = True
break
</code></pre>
<p>优点:容易理解
缺点:每个循环都有附加的条件语句</p>
<h2>老套的方法:提出一个例外</h2>
<pre><code>n = L[0][0]
m = len(A)
try:
for x in range(3):
for z in range(3):
if L[i][j] != n:
raise StopIteration
except StopIteration:
pass
</code></pre>
<p>优点:非常简单
缺点:在语义之外使用异常</p>
<h2>干净的方法:做一个函数</h2>
<pre><code>def is_different_value(l, elem, size):
for x in range(size):
for z in range(size):
if l[i][j] != elem:
return True
return False
if is_different_value(L, L[0][0], len(A)):
print "Doh"
</code></pre>
<p>优点:更干净更高效
缺点:但感觉像是C</p>
<h2>pythonic方法:按原样使用迭代</h2>
<pre><code>def is_different_value(iterable):
first = iterable[0][0]
for l in iterable:
for elem in l:
if elem != first:
return True
return False
if is_different_value(L):
print "Doh"
</code></pre>
<p>优点:仍然干净高效
缺点:你重新控制方向盘</p>
<h2>大师之道:使用<code>any()</code>:</h2>
<pre><code>def is_different_value(iterable):
first = iterable[0][0]
return any(any((cell != first for cell in col)) for elem in iterable)):
if is_different_value(L):
print "Doh"
</code></pre>
<p>优点:你会感到被黑暗力量赋予力量
缺点:会读你代码的人可能会开始讨厌你</p>