Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何将两个列表合并为一个_Python - Fatal编程技术网

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
不为空时才使用。您的原始代码效率更高。感谢您的解释!