【发布时间】:2017-01-24 21:33:42
【问题描述】:
当我运行以下内容时
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)是做什么的?它计算列表的长度...然后您完全忽略。 -
?.... 它只是为了查看我是否收到错误,因为它不适用于数字数据类型,因此当编译器声明存在时,我会混淆为什么我会收到错误1 在比较中
-
Python 内置了高效的
max函数,无需自己编写。但是,如果您想为学习目的编写自己的代码,最好给它起一个不同的名称。 -
您对
item[0] > m有什么期待?一件事是一个列表,另一件事是一个整数。您给出的错误信息都与此一致。比较应该给出什么结果? “我有点确定你可以比较 2 个整数” - 是的,但这不是你在做的。 -
您没有告诉我们您希望您的代码做什么。您只想在
L中查找第一个元素最大的子列表吗?
标签: python list int comparison