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

Python 如何以简单的单行方式打印列表中的元素?,python,list,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) 打印 我应该收到的输出用

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


如何打印输出以匹配所需的输出?还是同一件事?

为什么不使用
集合

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)
如果确实要向添加新项目,可以使用以下方法:

def union(a, b):
    a.extend([x for x in b if x not in a])

为什么不使用
集合

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)
如果确实要向添加新项目,可以使用以下方法:

def union(a, b):
    a.extend([x for x in b if x not in 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
的元素添加到其中

结果:

>>> 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
的元素添加到
a

中,尝试以下简单方法:

def union(a, b):
    return list(set(a + b))
尝试以下简单方法:

def union(a, b):
    return list(set(a + b))

谢谢这是一种运动:)。但是,即使尝试使用set()来解决它,我也发现a=[1,2,3]和b=[2,4,6],这并不是期望的输出。这是好东西。您不能也只为您的第一个案例返回列表而执行
list(设置(a+b))
吗?谢谢!这是一种运动:)。但是,即使尝试使用set()来解决它,我也发现a=[1,2,3]和b=[2,4,6],这并不是期望的输出。这是好东西。您不能也只为您的第一个案例返回列表而执行
list(设置(a+b))