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']