gpt4 book ai didi

python - 比较两个列表并返回不匹配的项目

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:05 24 4
gpt4 key购买 nike

我有两个列表:

nodes = [[nodeID1, x1, y1, z1],[nodeID2, x2, y2, z2],...,[nodeIDn, xn, yn, zn]]

subsetA_nodeID = [[nodeIDa], [nodeIDb], ....]]

我想比较这两个列表并返回一个新列表,其中 nodeIDs, x, y, znodesnodeIDs 不匹配subsetA_nodeID

我可以这样做:

new_list = []
for line in nodes:
for nodeID,x,y,z in line:
for line2 in subsetA_nodeID:
if line2[0] == nodeID:
else:
new_list.append([line])

这段代码效率很低。我正在寻找一种快速的方法来做到这一点。我试过字典,但我找不到正确使用它们的方法。有什么想法吗?

谢谢!

最佳答案

我建议先展平 subsetA_nodeID

ssa_flat = [x for sublist in subsetA_nodeID for x in sublist] 

或者,如果 subsetA_nodeID 中的每个子列表保证只包含一个元素:

ssa_flat = [x[0] for x in subsetA_nodeID]

如果节点是可散列的,请考虑将 ssa_flat 设为 set

ssa_flat = set(ssa_flat)

然后您可以像这样创建新列表:

lst = [x[0] for x in nodes if x[0] not in ssa_flat]

编辑:如果 lst 应该包含 [NodeID, x, y, z] 列表,只需更改第一个 x[0]到最后一个列表理解中的 x

关于python - 比较两个列表并返回不匹配的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496667/

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