我有一个节点名称列表列表,我有一个包含总节点的图表。
我需要找出节点名称列表中不存在的节点名称。
前:
public bool IsLoading { get; set; } = false;
graph:所有节点名称(需要迭代并查找节点名称)
例如。 (节点名称):[[x,y,h,j,k],[a,b,c],[t,q,r,v,x,y,k],[a,h,y,q,c]]
对于循环中的第一个列表[a,b,c,x,y,h,j,k,t,q,r,v]
,
需要返回图表中存在的剩余节点名称列表:[x,y,h,j,k]
它应该在循环中为节点名列表中的每个列表运行。
我正在使用python和[a,b,c,t,q,r,v]
。请帮帮我
答案 0 :(得分:1)
我建议使用set或dicts来提高效率。
lists_of_nodes = [['x','y','h','j','k'],['a','b','c'],['t','q','r','v','x','y','k'],['a','h','y','q','c']]
sets_of_nodes = map(set, lists_of_nodes)
all_nodes = reduce(lambda l, r: l.union(r), sets_of_nodes)
complements = [list(all_nodes.difference(node_set)) for node_set in sets_of_nodes]
for complement in complements:
print complement
'''
['a', 'c', 'b', 'q', 'r', 't', 'v']
['h', 'k', 'j', 'q', 'r', 't', 'v', 'y', 'x']
['a', 'h', 'c', 'b', 'j']
['b', 'k', 'j', 'r', 't', 'v', 'x']
'''
答案 1 :(得分:0)
l = [['x','y','h','j','k'],['a','b','c'],['t','q','r','v','x','y','k'],['a','h','y','q','c']]
def return_remaining(list_of_nodes):
total = ['a','b','c','x','y','h','j','k','t','q','r','v']
for node in list_of_nodes:
if node in total:
total.remove(node)
return total
for i in range(len(l)):
print return_remaining(l[i])
输出
['a', 'b', 'c', 't', 'q', 'r', 'v']
['x', 'y', 'h', 'j', 'k', 't', 'q', 'r', 'v']
['a', 'b', 'c', 'h', 'j']
['b', 'x', 'j', 'k', 't', 'r', 'v']