【问题标题】:How to compare a variable value to an array如何将变量值与数组进行比较
【发布时间】:2013-02-21 10:39:18
【问题描述】:

在 Python 中,如何比较两个浮点变量值以确保它们是否在一定的公差范围内?

例如:

variable = 17.40
array = [14.40, 14.12, 45.50]

我需要将变量值与数组元素进行比较,看看哪一个足够接近。

【问题讨论】:

  • 另外,你能澄清一下你想要做什么吗?
  • 考虑到这个问题,他还问了:stackoverflow.com/questions/15000021/… 我猜问题是数组中的数字是浮点数,如果你使用== 作为舍入,浮点比较不能很好地工作错误会搞砸你(尝试做17.1+0.3==17.4,你会得到False

标签: python arrays compare


【解决方案1】:

来自您也问过的this question。这是一段代码,它将检查您的变量是否在数组中(除非这不是您将变量值与数组元素进行比较的意思):

TOLERANCE=10**-6

def are_floats_equal(a,b):
  return abs(a-b) <= TOLERANCE

def float_in_array(number, array):
  return True in [are_floats_equal(number, a) for a in array]

编辑。这样做可能会更有效一些(虽然不太简洁),因为我们只在数组上循环一次:

def float_in_array(number, array):
  for a in array:
    if are_floats_equal(number, a):
      return True
  return False

【讨论】:

  • 我的猜测是他问了两个关于他面临的同一个问题的问题,他不太擅长完全表达问题是什么。但我可能是错的,这只是一个猜测。
  • 这就是any 的用途:any(are_floats_equal(number, a) for a in array)。 (虽然和你一样,我不确定这是否是 OP 所说的“比较”的意思;据我所知,他想要一份差异列表。)
  • 哦,很好,我什么都不知道。多年来一直使用 Python 作为我的首选语言,但我仍然学习有关它的新东西 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 2017-01-12
  • 1970-01-01
  • 2020-10-20
相关资源
最近更新 更多