Python 如何检查嵌套列表中有多少个条目,然后删除每个条目最后3个以外的所有其他值?

Python 如何检查嵌套列表中有多少个条目,然后删除每个条目最后3个以外的所有其他值?,python,list,nested-lists,sublist,Python,List,Nested Lists,Sublist,我有一份水果清单: fruit = [[['apples', '2'], ['apples', '7']], [['banana','5'], ['banana','6'], ['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]] 正如您在我的购物清单上所看到的,它是一个嵌套的清单,其中相同的项目在一个清单中分组在一起。我想做的是: 检查每个水果有多少

我有一份水果清单:

fruit = [[['apples', '2'], ['apples', '7']], [['banana','5'], ['banana','6'], ['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]]
正如您在我的购物清单上所看到的,它是一个嵌套的清单,其中相同的项目在一个清单中分组在一起。我想做的是:

  • 检查每个水果有多少个条目
  • 如果水果的条目数为3或更少,请保持原样
  • 如果水果的条目数超过3个,则删除该水果的条目(从该水果的
    水果[x][0]
    开始),直到水果的最后三个条目保留。例如,这将对上述列表中的
    'banana'
    进行处理,因为
    'banana'
    的条目数为5,因此前两个条目(
    ['banana','5'],['banana','6']
    )将被删除,
    ['banana','3'],['banana','9'],['banana','1']
    如果操作正确,则生成的代码为:

    fruit = [[['apples', '2'], ['apples', '7']], [['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]]
    
    我该怎么做?我曾尝试使用
    for
    循环检查条目数,但我不知道如何删除列表中的内容


    谢谢:)

    您可以将列表理解与
    if
    /
    else
    语句结合使用,如下所示:

    fruits = [[['apples', '2'], ['apples', '7']], [['banana','5'], ['banana','6'], ['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]]
    
    answer = [fruit if len(fruit) <= 3 else fruit[-3:] for fruit in fruits]
    print(answer)
    

    您可以将列表理解与
    if
    /
    else
    语句结合使用,如下所示:

    fruits = [[['apples', '2'], ['apples', '7']], [['banana','5'], ['banana','6'], ['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]]
    
    answer = [fruit if len(fruit) <= 3 else fruit[-3:] for fruit in fruits]
    print(answer)
    

    循环浏览主列表,将每个项目列表替换为其最后三个对象(这对已短于或等于3个对象的列表没有任何作用):

    或者,以理解形式:

    fruit = [f[-3:] for f in fruit]
    

    循环浏览主列表,将每个项目列表替换为其最后三个对象(这对已短于或等于3个对象的列表没有任何作用):

    或者,以理解形式:

    fruit = [f[-3:] for f in fruit]
    

    我猜你想知道如何从列表中删除一个项目?尝试ls.remove(ls[i]),其中i是要删除的元素的索引,ls是列表。谢谢,但我认为我的问题是,我不知道如何同时执行这两个操作,并使它们按照我希望的方式工作。所以我猜你想知道如何从列表中删除一个项目?尝试ls.remove(ls[i]),其中i是要删除的元素的索引,ls是列表。谢谢,但我认为我的问题是,我不知道如何同时执行这两个操作,并使它们按照我希望的方式工作。