通过将子列表的元素与Python中所有其他子列表中的元素进行比较来删除子列表

时间:2019-03-22 02:15:23

标签: python list element

我将线段的开始和结束坐标以及一些属性存储在具有形式的列表列表中。

我想从主列表中删除每个子列表,其中子对(x1 y1,x2 y2)已存在于我的列表中,但相反(x2 y2,x1 y1)

我的代码是:

lines=[[(x1, y1), (x2, y2), id1, id2],[(x2, y2), (x1, y1), id2, id1]] #random example 
lns=[ [l[0], l[1]] for l in lines] #make a list only with the node coordinate pairs
for line in lines:
if [line[1],line[0]] in lns: 
    lines.remove(line) 

此代码导致删除了一些我想要的元素(虽然不是全部)和一些不应删除的元素。知道我可能会缺少什么吗?

1 个答案:

答案 0 :(得分:0)

只需对初始代码进行少量调整,并修复错误后,此代码将提供正确的输出:

lines=[[(x1, y1), (x2, y2), id1, id2],[(x2, y2), (x1, y1), id2, id1]]
for line in lines:
    if [line[1],line[0], line[3],line[2]] in lns: 
         lines.remove([line[1],line[0], line[3],line[2]])