比较两个列表和提取元素

时间:2016-03-03 16:54:40

标签: python

我的代码

with open('freq1.txt') as f:
    next(f, None)
    list1 = [line.rstrip() for line in f]

with open('freq2.txt') as f:
    next(f, None)
    list2 = [line.rstrip() for line in f]

print set(list1).intersection(list2)
但是我得到了 组([]) 例如,我有两个列表

list1=[1,2,3,4]
list2=[3,2,7,5,9]

我想列出list1和list2

中的所有元素
newlist=[1,2,3,4,5,7,9]

如何写这个?

EDIT 我想使用列表推导的一种方式。

list1=[1.0,2.0,3.1,4.2]
list2=[3.0,2.0,7.2,5.1,9.2]
list3=[2.1,4.2,5.1,9.2]

su1 = list1 + [x for x in list2 if x not in list1]
su2= su1 + [x for x in list3 if x not in su1]
su2=sorted(su2)
print su2list1=[1.0,2.0,3.1,4.2]
list2=[3.0,2.0,7.2,5.1,9.2]
list3=[2.1,4.2,5.1,9.2]

su1 = list1 + [x for x in list2 if x not in list1]
su2= su1 + [x for x in list3 if x not in su1]
su2=sorted(su2)
print su2

工作非常好

[1.0, 2.0, 2.1, 3.0, 3.1, 4.2, 5.1, 7.2, 9.2]

2 个答案:

答案 0 :(得分:5)

您想要set.union()

>>> set(list1).union(list2)
set([1, 2, 3, 4, 5, 7, 9])

如果你想要一个列表作为结果(如果你不想使用列表的属性,如索引,那就没有必要;如果你只是处理整数, 因为,由于整数的散列等于它们自己(除了-1,即-2),set()对象也将保留顺序)你可以在{{list()函数上调用union()函数。 1}}。

>>> list(set(list1).union(list2))

答案 1 :(得分:1)

如果您希望元素按升序排序

sorted_unique = sorted(set(list1+list2))