【发布时间】:2017-05-20 07:55:47
【问题描述】:
我想从 list2 中删除列表中与 list1 中的第三项匹配的任何列表项。我目前正在尝试为 list1 中的每个项目循环 list2 并根据第三个字段删除。
list1: [[1,2,3],[4,5,6],[7,8,9]]
list2: [[-1,-2,3],[-4,-5,-6],[-7,-8,9],[1,2,8]]
final list2: [[-4,-5,-6],[1,2,8]]
我的伪代码:
for item1 in list1:
for item2 in list2:
if item1[2] == item2[2]:
remove item2[2] from list2
我尝试了一些使用集合和/或元组的示例技术,但它们都是基于从一个列表列表中删除重复项;而不是根据单独列表列表中的一个字段删除列表列表中的项目。
【问题讨论】:
-
与其修改list2,不如新建一个list?
new_list = [item for item in list2 if item not in list1]如果你愿意,你也可以分配给list2。 -
remove from list2 any list item in the list that matches the third item in list1 -
@sytech 你试过运行它吗?
-
这并不是完整的解决方案。只是想问 OP 创建一个新列表是否可以接受。 @roganjosh 你可以在下面看到我提出的解决方案。
-
@sytech 啊,因为它是一个有效的列表理解,我假设你认为它会给出预期的输出:)