我必须定义一个过程,union,它将两个列表作为输入。 它应该将第一个输入列表修改为两个列表的集合并。我假设第一个列表是一个集合,也就是说,它不包含重复的元素。
我试过这个,它有效:
def union(a, b):
a.append(b)
for item in b:
if item in a:
a.remove(item)
当我尝试测试时,这是输出:
a = [1,2,3] b = [2,4,6] 接头(A,B) 打印
我应该收到的输出是为了练习: 的 [1,2,3,4,6]
我收到的输出是: [1,3,[2,4,6]]
如何打印输出以匹配所需的输出?或者它是一回事吗?
答案 0 :(得分:1)
为什么不使用set
?
def union(a, b):
return list(set(a + b))
这不会修改你的列表但是没有订购,所以你不能依赖你的元素顺序。
如果您尝试在代码中发现错误,可以像这样修改它:
def union(a, b):
for item in b:
if item in a:
a.remove(item)
a.extend(b)
如果您真的想要为a添加新项目,可以使用:
def union(a, b):
a.extend([x for x in b if x not in a])
答案 1 :(得分:0)
a = [1,2,3]
b = [2,4,6]
def union(a, b):
set_a = set(a)
for ele in b:
if ele not in set_a:
a.append(ele)
return a
结果:
>>> union(a,b)
[1, 2, 3, 4, 6]
请注意,当您使用remove
时,列表中的第一个元素将被删除:
>>> a = [1,2,3,2,4,6]
>>> a.remove(2)
>>> a
[1, 3, 2, 4, 6]
因此,为了获得理想的结果,我们必须保持原样a
,并将b
中不属于a
的元素添加到其中。
答案 2 :(得分:0)
试试这个简单的方法:
def union(a, b):
return list(set(a + b))