Python 如何以简单的单行方式打印列表中的元素?
我必须定义一个程序,union,它将两个列表作为输入。 它应该将第一个输入列表修改为两个列表的集合并集。我假设第一个列表是一个集合,也就是说,它不包含重复的元素 我试过这个,它很有效: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) 打印 我应该收到的输出用
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))
?