python列表,删除列表2中列表1的内容

python列表,删除列表2中列表1的内容,python,list,Python,List,我有两张单子 list1=['value1','value2','value3'] 列表2=['value1','value2','value3','value4','value5'] 我想从列表2中删除列表1的内容 结果应该是: ['value4'、'value5'] list2=[elem for elem in list2 if elem not in list1]您可以通过将list1转换为set,然后通过列表理解创建一个新列表,其中包含列表2中不在列表1中的项 list1=['val

我有两张单子

list1=['value1','value2','value3']
列表2=['value1','value2','value3','value4','value5']
我想从列表2中删除列表1的内容

结果应该是:

['value4'、'value5']

list2=[elem for elem in list2 if elem not in list1]
您可以通过将list1转换为set,然后通过列表理解创建一个新列表,其中包含列表2中不在列表1中的项

list1=['value1', 'value2', 'value3']
list2=['value1', 'value2', 'value3', 'value4', 'value5']
list1_set = set(list1)
result = [i for i in list2 if i not in list1_set]
print(result)
输出

['value4', 'value5']

从列表1到集合的转换是因为性能更好,因为检查集合中的项目是否比列表中的项目快。

要打印列表2中不在列表1中的项目的值,可以使用以下代码:

list1=['value1', 'value2', 'value3']
list2=['value1', 'value2', 'value3', 'value4', 'value5']

print([list2 for list2 in list2 if list2 not in list1])

是否要从现有列表中删除这些元素,或创建新的筛选列表?从技术上讲,这不会从
list2
中删除,而是用新列表覆盖变量。例如,您可以使用
list[:]=…
替换
list2
中的所有元素。另外,将
list1
转换为
set
可能会更快。注意,这是可行的,但效率很低。
list1=['value1', 'value2', 'value3']
list2=['value1', 'value2', 'value3', 'value4', 'value5']

set_list_1 = set(list1)
set_list_2 = set(list2)
print(list(set_list_2.difference(set_list_1)))
['value4', 'value5']