这可以更加优化:找到唯一元素(元素在两个列表中只出现一次)

时间:2017-09-17 17:55:52

标签: python python-2.7 loops

示例:如果a = [1,2]且b = [1],则输出为2,因为它在两个列表中是唯一的

假设只有一个这样的数字。

唯一编号可以在两个列表中的任何一个中。

def find_me(x, y):
    for element in x:
        if element not in y:
            return element
    for element in y:
        if element not in x:
            return element

first_list = [14, 27, 1, 4, 2, 50, 3, 1]
second_list = [2, 4, -4, 3, 1, 1, 14, 27, 50]

print find_me(first_list,second_list)

#output : -4 

我通过此代码获得了预期的结果。

我想知道这是否可以进一步优化。

1 个答案:

答案 0 :(得分:0)

使用list.count()功能:

first_list = [14, 27, 1, 4, 2, 50, 3, 1]
second_list = [2, 4, -4, 3, 1, 1, 14, 27, 50]

merged = first_list + second_list
unique_item = [i for i in merged if merged.count(i) == 1]
print(unique_item)    # [-4]

或使用设置对象:

unique_item = set(first_list) ^ set(second_list)
print(unique_item)    # {-4}