Python:如何将两个列表合并为一个

时间:2013-11-22 11:59:03

标签: python

我有这样的代码:

if list1:
    merged += list1
    list1 = []
elif list2:
    merged += list2
    list2 = []

所以我将一个列表附加到另一个列表然后将其清空。 有什么方法可以写出部分内容:

merged += list1
list1 = []

使用函数等在一行上更短更快(更高效)?

1 个答案:

答案 0 :(得分:4)

您可以将作业放在一行:

if list1:
    merged, list1 = merged + list1, []
elif list2:
    merged, list2 = merged + list2, []

您也可以在一行中选择源列表:

source = list1 or list2 or []
merged, source[:] = merged + source, []

如果其中任何一个通过切片分配都有元素,则会更新list1list2

演示:

>>> def demo(list1, list2, merged):
...     source = list1 or list2 or []
...     merged, source[:] = merged + source, []
...     return list1, list2, merged
... 
>>> demo([], [], [1, 2])
([], [], [1, 2])
>>> demo([3, 4], [], [1, 2])
([], [], [1, 2, 3, 4])
>>> demo([3, 4], [5, 6], [1, 2])
([], [5, 6], [1, 2, 3, 4])
>>> demo([], [5, 6], [1, 2])
([], [], [1, 2, 5, 6])

那就是说,我认为你应该坚持原来的版本。效率更高(.extend()+= list扩展现有list对象,上述代码始终构建一个全新的对象,即使list1并且list2都是空的,并且清晰简单,更具可读性。很高兴我们不时地展示我们的Python fu,但实际上这可能不是这个地方。 : - )