我必须从循环列表中获取最小值,但是我收到错误:
Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
Traceback (most recent call last):
File "python", line 6, in <module>
TypeError: unorderable types: int() < NoneType()
这是我的代码:
tab = [1,2,3,4, None, None, None]
min_value = None
for i in tab:
if i:
if int(i) < min_value:
min_value = i
print(min_value)
答案 0 :(得分:1)
将min_value
初始化为数字而不是无。
min_value = float("inf")
您还可以使用min()
功能进行此类操作:
min(v for v in tab if v is not None)
答案 1 :(得分:1)
更简单
tab = [1,2,3,4, None, None, None]
print(min([i for i in tab if not i == None]))
答案 2 :(得分:1)
您声明的初始值为None
,无法与数字进行比较。尝试一个非常高的值,不太可能在列表中 - 或者,更好的是,只需抓住列表的第一项并使用它。如果它出现错误,请务必将其设置为0(类似于您在if i:
循环中执行的操作。)
您可以将设置新min_value
的条件与and
逻辑运算符相结合。
此外,将print
调用放在循环外部,因此您只打印最终值。
tab = [1,2,3,4, None, None, None]
min_value = tab[0] or 0
for i in tab:
if i and int(i) < min_value:
min_value = i
print(min_value)