gpt4 book ai didi

python - 在 python 中比较包含 nan 的集合

转载 作者:行者123 更新时间:2023-11-28 20:44:19 24 4
gpt4 key购买 nike

我正在尝试比较 python 中包含 nan 的两个集合,但很难这样做,因为 {float('nan')} != {float('nan')} 。例如:

s1 = {float('nan'), 1}
s2 = {float('nan'), 1, 2}

assert set.issubset(s1, s2)

我得到一个断言错误。我该如何处理?

最佳答案

一种方法:在相等之前测试身份(例如,请参阅文档中的 here),因此如果您使用 same nan,它会起作用:

>>> nan = float("nan")
>>> s1 = {nan, 1}
>>> s2 = {nan, 1, 2}
>>> set.issubset(s1, s2)
True

虽然

>>> s1 = {float("nan"), 1}
>>> s2 = {float("nan"), 1, 2}
>>> set.issubset(s1, s2)
False

使用 nan 非常笨拙,我会尽量避免将它们放在集合中并切换到不同的规范形式。但您始终可以确保它是同一个:

>>> def one_nan(x, nan=float("nan")):
... return nan if math.isnan(x) else x
...
>>> set.issubset(set(map(one_nan, s1)), set(map(one_nan, s2)))
True

或相同的一千个变体。 (我有时使用 x != x 作为 nan 检测的快捷方式,但在这里明确说明可能是个好主意。)

关于python - 在 python 中比较包含 nan 的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com