我在Python中有两个列表:

temp1 = ['One', 'Two', 'Three', 'Four']
temp2 = ['One', 'Two']

假设每个列表中的元素都是唯一的,我想用第一个列表中的项创建第三个列表,这些项不在第二个列表中:

temp3 = ['Three', 'Four']

有没有没有周期和检查的快速方法?


当前回答

试试这个:

temp3 = set(temp1) - set(temp2)

其他回答

这是另一个解决方案:

def diff(a, b):
    xa = [i for i in set(a) if i not in b]
    xb = [i for i in set(b) if i not in a]
    return xa + xb

我知道这个问题已经得到了很好的答案,但我希望使用numpy添加以下方法。

temp1 = ['One', 'Two', 'Three', 'Four']
temp2 = ['One', 'Two']

list(np.setdiff1d(temp1,temp2))

['Four', 'Three'] #Output

试试这个:

temp3 = set(temp1) - set(temp2)

如果你遇到TypeError: unhashable type: 'list',你需要将列表或集转换为元组。

set(map(tuple, list_of_lists1)).symmetric_difference(set(map(tuple, list_of_lists2)))

参见如何比较python中的列表/集列表?

我们可以计算交集减去列表并集:

temp1 = ['One', 'Two', 'Three', 'Four']
temp2 = ['One', 'Two', 'Five']

set(temp1+temp2)-(set(temp1)&set(temp2))

Out: set(['Four', 'Five', 'Three'])