Как сравнить и удалить второй элемент вложенного списка, используя списки? - PullRequest
2 голосов
/ 07 июля 2019

Итак, у меня есть вложенный список, и я хотел бы сравнить и удалить список во вложенном списке на основе соответствия условий.

Вот мой код:

def secondValue(val):
    return val[1]


if __name__ == '__main__':
    nestedList=[]
    for _ in range(int(input())):
        name = input()
        score = float(input())
        nestedList.append([name,score]) # Made a nested list from the input 
    lowestMarks=min(nestedList,key=secondValue) [1]  #Extracting the minimum score 
    newList=[x for x in nestedList[1] if x!=lowestMarks] # PROBLEM HERE

ПоследнийВ строке моего кода я хочу удалить список из моего вложенного списка на основе соответствия условий.Конечно, я могу сделать это с помощью вложенного цикла for, но если есть способ сделать это, используя понимание списка, я бы рассмотрел этот подход.

В принципе, я был бы признателен за ответ, который говорит, как удалить списокиз вложенного списка на основе условия.В моем случае список выглядит так:

[[test,23],[test2,44],......,[testn,23]] 

Ответы [ 2 ]

2 голосов
/ 07 июля 2019

Проблемы :

  • for x in nestedList[1] просто перебирает второй подсписок вложенного списка.

  • x является подсписком, и он никогда не может быть равен lowestMarks.

Использовать понимание списка как:

newList = [[x, y] for x, y in nestedList if y != lowestMarks]
1 голос
/ 07 июля 2019

Ошибка была в строке ниже и теперь исправлена.

newList=[x for x in nestedList if x[1] != lowestMarks] # PROBLEM HERE

nestedList [1] выбирает второй подсписок. Вы хотите перебрать весь список.

...