如何使用列表推导比较和删除嵌套列表的第二个元素?

时间:2019-07-07 06:10:10

标签: python list-comprehension

所以我有一个嵌套列表,想根据条件匹配比较并删除嵌套列表中的列表。

这是我的代码:

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 个答案:

答案 0 :(得分:2)

问题

  • for x in nestedList[1]只是迭代嵌套列表的第二个子列表。

  • x是一个子列表,永远不能等于lowestMarks

使用列表理解为:

newList = [[x, y] for x, y in nestedList if y != lowestMarks]

答案 1 :(得分:1)

Mistake在下面一行中,现在已修复。

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

nestedList [1]获取第二个子列表。您想遍历整个列表。