Python:如何将两个列表合并为一个
我有这样一个代码:Python:如何将两个列表合并为一个,python,Python,我有这样一个代码: if list1: merged += list1 list1 = [] elif list2: merged += list2 list2 = [] 因此,我将一个列表附加到另一个列表,然后将其设为空。 有没有办法写下whis部分: merged += list1 list1 = [] 更短更快(更高效),在一行上使用函数等?您可以将作业放在一行上: if list1: merged, list1 = merged + list1
if list1:
merged += list1
list1 = []
elif list2:
merged += list2
list2 = []
因此,我将一个列表附加到另一个列表,然后将其设为空。
有没有办法写下whis部分:
merged += list1
list1 = []
更短更快(更高效),在一行上使用函数等?您可以将作业放在一行上:
if list1:
merged, list1 = merged + list1, []
elif list2:
merged, list2 = merged + list2, []
您也可以在一行中选择源列表:
source = list1 or list2 or []
merged, source[:] = merged + source, []
这将更新list1
或list2
,前提是其中任何一个都通过切片分配具有元素
演示:
也就是说,我认为你应该坚持你原来的版本。它更有效(
.extend()
或+=
在列表上
扩展现有的列表
对象,上面的代码总是构建一个全新的对象,即使列表1
和列表2
都是空的),并且清晰简单,因此可读性更强。我们可以不时地炫耀我们的Python fu,这真是太好了,但实际上,这可能不是个好地方。:-) 您可以将作业放在一行上:
if list1:
merged, list1 = merged + list1, []
elif list2:
merged, list2 = merged + list2, []
您也可以在一行中选择源列表:
source = list1 or list2 or []
merged, source[:] = merged + source, []
这将更新list1
或list2
,前提是其中任何一个都通过切片分配具有元素
演示:
也就是说,我认为你应该坚持你原来的版本。它更有效(
.extend()
或+=
在列表上
扩展现有的列表
对象,上面的代码总是构建一个全新的对象,即使列表1
和列表2
都是空的),并且清晰简单,因此可读性更强。我们可以不时地炫耀我们的Python fu,这真是太好了,但实际上,这可能不是个好地方。:-) Martijn的答案很好。尽管我认为这值得一提——如果您正在这样做,您的程序中可能有一个可以改进的控制流/作用域——手动“重置”多个列表的需要似乎不应该发生。@selllikesybok谢谢!Martijn的答案很好。尽管我认为这值得一提——如果您正在这样做,您的程序中可能有一个可以改进的控制流/作用域——手动“重置”多个列表的需要似乎不应该发生。@selllikesybok谢谢!谢谢我想我会坚持我原来的代码,因为我认为它已经和以前一样简单了possible@SomeOne:当然,事实上我同意。切片赋值是一个很好的工具,但是用它把几行合并成一行并不是最好的方法。请注意,您的代码不会重新生成合并的
,只使用.extend()
,并且仅当列表1
或列表2
不为空时才使用。您的原始代码效率更高。感谢您的解释!谢谢我想我会坚持我原来的代码,因为我认为它已经和以前一样简单了possible@SomeOne:当然,事实上我同意。切片赋值是一个很好的工具,但是用它把几行合并成一行并不是最好的方法。请注意,您的代码不会重新生成合并的
,只使用.extend()
,并且仅当列表1
或列表2
不为空时才使用。您的原始代码效率更高。感谢您的解释!