Удаление подсписка путем сравнения его элементов с элементами всех остальных подсписков в Python - PullRequest
1 голос
/ 22 марта 2019

Я храню начальную и конечную координаты отрезков линии вместе с некоторыми атрибутами в списке списков с формой.

Я хочу удалить из своего основного списка каждый подсписок, где находится пара координат (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 голосов
/ 24 марта 2019

С небольшими корректировками в исходном коде и после исправления ошибки этот код дает правильный вывод:

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]]) 
...