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和以前一样: - (
希望你能帮助我 编辑:对不起,我忘了说这些列表的日期时间类型有日期。它仍然有用吗?答案 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