如何以简单的单行方式打印列表中的元素?

时间:2013-07-27 13:25:25

标签: python list

我必须定义一个过程,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]]

如何打印输出以匹配所需的输出?或者它是一回事吗?

3 个答案:

答案 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))