如何检查嵌套列表中有多少条目,然后删除每个项目的最后 3 个值以外的所有其他值?
How do I check how many entries there are within a nested list and then remove all other values other than the last 3 for each item?
我有一份水果清单:
fruit = [[['apples', '2'], ['apples', '7']], [['banana','5'], ['banana','6'], ['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]]
正如您在我的购物清单上看到的那样,它是一个嵌套清单,其中相同的项目被分组在一个清单中。我想做的是:
- 检查每个水果有多少条目
- 如果水果的条目数不超过 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
循环检查条目数,但我不知道如何删除列表中的内容。
谢谢:)
您可以使用带有 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]
我有一份水果清单:
fruit = [[['apples', '2'], ['apples', '7']], [['banana','5'], ['banana','6'], ['banana','3'], ['banana','9'], ['banana','1']], [['grapes','10'], ['grapes','0'], ['grapes','7']]]
正如您在我的购物清单上看到的那样,它是一个嵌套清单,其中相同的项目被分组在一个清单中。我想做的是:
- 检查每个水果有多少条目
- 如果水果的条目数不超过 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
循环检查条目数,但我不知道如何删除列表中的内容。
谢谢:)
您可以使用带有 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]