Удалить данные, хранящиеся в виде списка в другом списке - PullRequest
0 голосов
/ 07 мая 2020

Случай выглядит следующим образом: я создал код, который на основе некоторых критериев дает мне печатный список для каждого экрана.

data = [[ 17,     0,     0,      0,    2.5,   'A+',    450],
        [ 18,     5,     0,      5,    2.5,   'A+',    450],
        [ 19,     9,     0,      9,    2.5,   'A+',    450],
        [ 20,     0,   2.5,      0,      5,   'A+',    450],
        [ 21,     5,   2.5,      5,      5,   'A+',    450],
        [ 22,     0,   2.5,      5,    2.5,   'B-',    400],
        [ 23,     5,   2.5,      9,    2.5,   'B-',    400],
        [ 24,     0,     5,      5,      5,   'B-',    400]] 

pairs =  []

for i in range(len(data)):
    for j in range(len(data)):
        if data[i][3] == data[j][1] and data[i][4] == data[j][2]:
            pairs.append([data[i][0], data[j][0]])
#        if data[i][5] == 'B-' and data[i][5] == data[i+1][5]:
#            pairs.append([data[i][0], data[j][0]])            
print(pairs)

Но теперь я хочу удалить - в данном случае - список, содержащий пару [22, 23], поскольку он удовлетворяет 2 условиям:

  • Первое - это 2 последовательных числа.
  • Второе - оба имеют тип 'B-' (data [i] [5] = 'B -')

Я хочу удалить только те, которые соответствуют этим двум условиям, список будет похож на это (в иллюстративных целях):

[[17, 20], [17, 22], [18, 21], [18, 23], [20, 24], [22, 21]]

Я попытался создать с другим условным условием, в котором я включаю упомянутые точки, но у меня есть ошибки индексации, я думаю, что есть способ исправить это, я был бы очень признателен за ваше Помогите. С уважением

1 Ответ

1 голос
/ 07 мая 2020

Если вы немного измените закомментированный код, вы получите то, что запрашиваете:

for i in range(len(data)):
    for j in range(len(data)):
        if data[i][3] == data[j][1] and data[i][4] == data[j][2]:
            if (not (data[i][5] == data[j][5] == 'B-')) and data[i][0]+1 != data[j][0]:
                 pairs.append([data[i][0], data[j][0]])     

print(pairs)       
...