提问人:Ekeuwei 提问时间:7/1/2022 最后编辑:M. JustinEkeuwei 更新时间:11/15/2023 访问量:123
如何精确比较嵌套 for 循环中的值
How to precisely compare values in a nested for loop
问:
我正在尝试比较嵌套 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
答:
1赞
MangoNrFive
7/2/2022
#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-array 时,numpy 确实将整个数组转换为 str 类型,包括整数以表示新数据。请参阅此链接作为参考 Python - Numpy 数组中的字符串和整数
评论