有幾種方法可以做到這一點:
最簡單的方法:定點變量
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
優點:易於理解 缺點:附加條件語句,每循環
哈克的方式:提出異議
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
個
優點:非常簡單 缺點:使用異常的語義
的清潔方式之外:做一個功能
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"
優點:更清潔,仍然有效 缺點:但感覺像C
的Python的方式:使用迭代,因爲它應該是
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"
個優點:還算乾淨,高效的 缺點:你reinvdent輪
的大師方式:使用any()
:
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"
優點:人們會讀你:你會覺得與黑暗的力量 利弊授權代碼可能會開始不喜歡你
哇,希望C#有'for ... else'構造! – Blindy 2011-06-14 16:06:37
哦,我希望對於C++,Java也是如此...... :-) – 2011-06-14 16:09:54
我試圖讓函數在休息之前返回一個值,但我不斷收到一個警告,表示休息永遠不會到達 – LostLin 2011-06-14 16:13:12