Python - 基于另一个列表的列表中的del元素

时间:2016-02-25 10:57:21

标签: python list

list1 = [1,2,3,4,5,6,7,8,9]
list2 = [10,11,12,13,5,7]

现在我想要list2和list2

中的相同元素的cut2

- > list2 = [10, 11, 12, 13] 删除5和7,因为它们也在list1中。

这是我试过的:

for i in range(len(list1)):
    test = list1[i]
    if test in list2:
        del list2[list1[i]]
print(list2)

但是list2和以前一样: - (

希望你能帮助我 编辑:对不起,我忘了说这些列表的日期时间类型有日期。它仍然有用吗?

4 个答案:

答案 0 :(得分:2)

试试这个,首先将list同时转换为set,现在很容易找到两个set之间的差异,然后将结果转换为list并将其分配给{{1} }}:

list2

但是,只有在列表中没有重复项时才会起作用。

答案 1 :(得分:2)

你可以采取一些简单的方法:

>>> list1 = [1,2,3,4,5,6,7,8,9]
>>> list2 = [10,11,12,13,5,7]
>>> [item for item in list2 if item not in list1]
[10, 11, 12, 13]

或者,您可以使用filter

>>> filter(lambda item: item not in list1, list2)
[10, 11, 12, 13]

或者您可以像这样使用generator function

>>> def diff_list(lst1, lst2):
...     for item in lst1:
...         if item not in lst2:
...            yield item
... 
>>> list(diff_list(list2, list1))
[10, 11, 12, 13]

答案 2 :(得分:0)

您的删除有误,您要删除索引list2上的list1[i]中的元素,而不是删除list2[index_in_list2]或使用remove这样的list2.remove(list1[i])

for item in list1:
    if item in list2:
        list2.remove(item)

答案 3 :(得分:0)

list1 = [1,2,3,4,5,6,7,8,9]
list2 = [10,11,12,13,5,7]

list2 = [i for i in list2 if not i in list1]
print list2