You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python混合值数组与整数相等判断全返回False问题排查

问题根因

代码存在两处逻辑错误,共同导致所有条目返回FAIL:

  • 相等判断类型不匹配:判断条件中用数组元素和字符串'5'做比较,但数组本身是字符串、整数混合存储,当匹配位置存储的是整数类型的5时,Python中5 == '5'的返回值永远是False,PASS分支永远不会触发。
  • DataFrame赋值逻辑错误:循环中df['PASS_FAIL'] = 'PASS'/df['PASS_FAIL'] = 'FAIL'的写法是对整列所有行统一赋值,不是给当前遍历到的行单独赋值。循环每执行一次,全列值就会被当前分支的结果覆盖一次,只要最后一次循环走到FAIL分支,之前设置过的所有PASS都会被覆盖,最终整列全为FAIL。

单独打印数组元素能得到正确值,是因为坐标转int后做索引的逻辑本身没有问题,异常和索引转换操作无关。

修复方法
  1. 统一判断两侧的类型:先明确需要匹配的是整数5还是字符串'5',保证比较运算符两边的值类型一致。
  2. 修正DataFrame赋值逻辑:赋值时指定当前行的位置,不要直接对整列赋值。

修正后的参考代码如下:

# 先初始化整列为默认值FAIL
df['PASS_FAIL'] = 'FAIL'
for i in range(len(x_co_list)):
    x_idx = int(x_co_list[i])
    y_idx = int(y_co_list[i])
    current_val = array[x_idx][y_idx]
    # 若需要匹配字符串'5',就把右侧判断值改为'5'
    if current_val == 5:
        # 仅对当前索引对应的行赋值
        df.loc[i, 'PASS_FAIL'] = 'PASS'

如果x、y坐标列表的遍历顺序和DataFrame行顺序不是一一对应,将df.loc[i, 'PASS_FAIL']中的i替换为实际的行匹配条件即可。

内容的提问来源于stack exchange,提问作者Kebaber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:16:17