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

2024-04-20 03:45:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份水果清单:

fruit = [[['apples', '2'], ['apples', '7']], [['banana','5'], ['banana','6'], ['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]]

正如您在我的购物清单上看到的,它是一个嵌套的清单,其中相同的项目被分组在一个清单中。我想做的是:

  1. 检查每个水果有多少个条目
  2. 如果水果的条目数为3或更少,请保持原样
  3. 如果水果的条目数超过3个,则删除该水果的条目(从该水果的fruit[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循环检查条目数,但不知道如何删除列表中的内容。你知道吗

谢谢:)


Tags: 项目代码内容列表for条目购物banana
2条回答

可以将列表理解与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)

输出

[[['apples', '2'], ['apples', '7']],
 [['banana', '3'], ['banana', '9'], ['banana', '1']],
 [['grapes', '10'], ['grapes', '0'], ['grapes', '7']]]

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

for i in range(len(fruit)):
    fruit[i] = fruit[i][-3:]

或者,以理解的形式:

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

相关问题 更多 >