这是一个令人头疼的问题,我花了几个小时试图解决它。下面的代码采用两个整数列表,并返回第一个列表中但不是第二个列表中的项目的列表,以及第二个列表中不在第一个列表中的项目。
def difference(lista, listb):
output_list = []
for element in range(len(lista)):
if lista[element] not in listb:
output_list.append(lista[element])
for element in range(len(listb)):
if listb[element] not in lista:
output_list.append(listb[element])
return output_list
list1 = [1, 2, 4, 5, 6]
list2 = [1, 2, 5, 7, 9]
打印(f" 您的列表是 {list1} 和 {list2},第一个列表中的项目,但第二个列表中没有。")
代码有效,但我确信有一种方法可以通过列表理解来做到这一点。我试过了:
output_list = [element for element in lista if element not in listb] + [element for element in listb if element not in lista]
这行不通。非常感谢收到任何线索!
解决方案:
如果列表中的重复项不是问题,可以使用集合来解决。例如
list1 = [1, 2, 4, 5, 6]
list2 = [1, 2, 5, 7, 9]
def difference(lista, listb):
res_a = set(list1).difference(list2)
res_b = set(list2).difference(list1)
print(f"list1: {res_a}")
print(f"list2: {res_b}")
输出:
difference(list1, list2)
>> list1: {4, 6}
>> list2: {7, 9}