列表中的最小值没有值

时间:2016-11-29 13:01:21

标签: python python-3.x loops min

我必须从循环列表中获取最小值,但是我收到错误:

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)

3 个答案:

答案 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)