比较python3中多维数组中的单个元素

2024-10-03 17:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python3编写一个程序,多维列表有点问题。你知道吗

我有两个多维列表,其中填充了从API调用返回的数据,我想将第一个列表的每个最低级别列表与第二个列表的每个最低级别列表进行比较,如果它满足某些条件,则将其附加到第三个列表。你知道吗

程序将调用API并检索x。然后再过5分钟,它将再次进行相同的调用,更新的值将放在列表y中。比较将用于确定列表中的特定值是否增加。如果有,则附加到第三个数组。你知道吗

以下是每个列表的外观:

x = [
    [[x1a1, x2a1, x3a1], [x1b1, x2b1, x3b1], [x1c1,x2c1,x3c1]],
    [[x1a2, x2a2, x3a2], [x1b2, x2b2, x3b2], [x1c2,x2c2,x3c2]],
    [[x1a3, x2a3, x3a3], [x1b3, x2b3, x3b3], [x1c3,x2c3,x3c3]],
    [[x1a4, x2a4, x3a4], [x1b4, x2b4, x3b4], [x1c4,x2c4,x3c4]],
    ...
    ]

y = [
    [[y1a1, x2a1, x3a1], [y1b1, y2b1, y3b1], [y1c1,y2c1,y3c1]],
    [[y1a2, x2a2, x3a2], [y1b2, y2b2, y3b2], [y1c2,y2c2,y3c2]],
    [[y1a3, x2a3, x3a3], [y1b3, y2b3, y3b3], [y1c3,y2c3,y3c3]],
    [[y1a4, x2a4, x3a4], [y1b4, y2b4, y3b4], [y1c4,y2c4,y3c4]],
    ...
    ]
z = []

我需要做的是比较所有x1前缀元素和所有y1前缀元素,所有x2前缀元素和所有y2前缀元素,所有x3前缀元素和所有y3前缀元素。你知道吗

作为一个示例,我的代码中的逻辑如下:

if x1a1 == y1a1 and x3a1 == y3a1 and x2a1 > y2a1:
    z.append([y1a1,y2a1,y3a1])
else:
    #Do Nothing

我需要对三个变量(即[x1a1, x2a1, x3a1][y1b3, y2b3, y3b3]等)的每个分组运行上述比较,如果可以的话,我希望避免多个嵌套for循环。你知道吗

任何正确方向的指导都将不胜感激。你知道吗


Tags: 程序api元素列表级别x1a1x3a3x3a1
1条回答
网友
1楼 · 发布于 2024-10-03 17:21:05

首先将列表展平,我们可以使用生成器,因为我们只想让它们找到两个列表的产品交集

x_flat = (item for row in x for item in row)
y_flat = (item for row in y for item in row)

现在只要检查x元组和y元组的所有乘积

z = [x_test for x_test,y_test in itertools.product(x_flat,y_flat) if x_test == y_test]

假设x1a1或任何行为类似于普通python对象的东西,您不必检查列表中的每个元素

[1,2,3] == [1,2,3] # True

相关问题 更多 >