當我運行以下混淆比較錯誤
def max(L):
m = L[0][0]
for item in L:
if item[0] > m:
m = item
return m
L = [[20, 10], [10, 20], [30, 20],[12,16]]
print(max(L))
我得到的錯誤 TypeError: unorderable types: int() > list()
在第4行的混亂是當我試圖讓這兩個成員的len()
。所以,從錯誤信息是合理的假設m
是列表,所以我跑
def max(L):
m = L[0][0]
for item in L:
len(m)
if item[0] > m:
m = item
return m
L = [[20, 10], [10, 20], [30, 20],[12,16]]
print(max(L))
並且得到錯誤len(m) TypeError: object of type 'int' has no len()
。好了,所以唯一的選擇就是item[0]
是列表...所以同樣
def max(L):
m = L[0][0]
for item in L:
len(item[0])
if item[0] > m:
m = item
return m
L = [[20, 10], [10, 20], [30, 20],[12,16]]
print(max(L))
,我也得到了同樣的錯誤:len(item[0]) TypeError: object of type 'int' has no len()
。由於我確定你可以比較2個整數,所以我很難理解如何處理原來的錯誤。
你認爲'len(m)'做什麼?它計算列表的長度......然後你完全忽略*。 – jonrsharpe
?....它只是想看看我是否得到一個錯誤,因爲它不適用於數字數據類型,因此提供了混淆,爲什麼我得到錯誤,當編譯器指出存在1比較 – xor
Python有一個高效的內置'max'功能,不需要編寫自己的。但是,如果你想爲自己的學習目的而自己寫,那麼給它一個不同的名字是個好主意。 –