如何精确比较嵌套 for 循环中的值

问题描述 投票:0回答:1

我正在尝试比较嵌套 for 循环中二维数组的值,但在这种情况下我似乎无法获得正确的关系操作。

所以我循环遍历二维数组并将其值与另一个一维数组中的值进行比较,我度过了非常有趣的一天。

import numpy as np

packetsDb = np.empty((0,4))

head = [['AAA', 'BBB', 'CCC', 'DDD']]
packet1 = [[255, 256, 257, 258]]
packet2 = [[255, 256, 257, 259]]
test = [255, 256, 257, 259]


packetsDb = np.append(packetsDb, np.array(head), axis=0)
packetsDb = np.append(packetsDb, np.array(packet1), axis=0)
packetsDb = np.append(packetsDb, np.array(packet2), axis=0)

for x in packetsDb:
   for y in x:
       print(test[0], y, test[0] == y)
//Result
255 AAA False
255 BBB False
255 CCC False
255 DDD False
255 255 False //What's happening here
255 256 False
255 257 False
255 258 False
255 255 False //and here
255 256 False
255 257 False
255 259 False
python numpy equality
1个回答
1
投票

结果一开始确实是违反直觉的,但是一旦你打印出类型,它就会变得更加清晰:

for x in packetsDb:
    for y in x:
        print(test[0], y, test[0] == y, type(test[0]), type(y))

//Result
255 AAA False <class 'int'> <class 'numpy.str_'>
...

test[0] 和 y 打印时看起来相同,但实际上它们是不同的类型,因此比较结果为 False。

当您将字符串列表附加到 numpy 数组时,numpy 确实将整个数组转换为 str 类型,包括能够表示新数据的整数。请参阅此链接作为参考Python - Numpy 数组中的字符串和整数

© www.soinside.com 2019 - 2024. All rights reserved.