在 Python 中创建两级列表理解

问题描述 投票:0回答:1

这是一个令人头疼的问题,我花了几个小时试图解决它。下面的代码采用两个整数列表,并返回第一个列表中但不是第二个列表中的项目的列表,以及第二个列表中不在第一个列表中的项目。

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]

这行不通。非常感谢收到任何线索!

python list-comprehension
1个回答
0
投票

解决方案

如果列表中的重复项不是问题,可以使用集合来解决。例如

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}
© www.soinside.com 2019 - 2024. All rights reserved.