Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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:将一个2D列表附加到另一个2D列表_Python_List_Append - Fatal编程技术网

Python:将一个2D列表附加到另一个2D列表

Python:将一个2D列表附加到另一个2D列表,python,list,append,Python,List,Append,我正在尝试将二维列表附加到另一个二维列表,如下所示: list1 = [('a', '1'), ('b', '2'), ('c', '3')] list2 = [('d', '4'), ('e', '5'), ('f', '6')] 如果我将list1附加到list2中,则应输出: list2 = [('d', '4'), ('e', '5'), ('f', '6'), ('a', '1'), ('b', '2'), ('c', '3')] 我已尝试使用以下代码解决此问题: for x, y

我正在尝试将二维列表附加到另一个二维列表,如下所示:

list1 = [('a', '1'), ('b', '2'), ('c', '3')]
list2 = [('d', '4'), ('e', '5'), ('f', '6')]
如果我将
list1
附加到
list2
中,则应输出:

list2 = [('d', '4'), ('e', '5'), ('f', '6'), ('a', '1'), ('b', '2'), ('c', '3')]
我已尝试使用以下代码解决此问题:

for x, y in list1:
    list2.append([x, y])
这给了我以下错误:

Traceback (most recent call last):
    File "C:\Python27\SortCounty.py", line 59, in <module>
        for x, y in final_list:
ValueError: too many values to unpack
回溯(最近一次呼叫最后一次):
文件“C:\Python27\SortCounty.py”,第59行,在
对于最终列表中的x、y:
ValueError:要解压缩的值太多

简单,使用
+
运算符。您可以使用
+
运算符连接两个列表

>>> list1 = [('a', '1'), ('b', '2'), ('c', '3')]
>>> list2 = [('d', '4'), ('e', '5'), ('f', '6')]
>>> list2 + list1
[('d', '4'), ('e', '5'), ('f', '6'), ('a', '1'), ('b', '2'), ('c', '3')]

您可以使用
extend
就地修改
list2

>>> list2.extend(list1)
>>> list2
[('d', '4'), ('e', '5'), ('f', '6'), ('a', '1'), ('b', '2'), ('c', '3')]
如果您要扩展一个大列表,这将特别有效,因为没有创建该列表的副本:操作是,
k
是您要添加的列表的长度

正如其他人所指出的,这与问题中的代码本质上是相同的行为。实际上,
extend
应该快一点,因为
list1
上的循环被下移到C级

ValueError:要解包的值太多
表示列表中的一个或多个元组
final\u list
包含两个以上的元素。这会导致final_list:中x,y的
行引发错误,因为
x
y
不能标记元组中的每个元素。

列表1
中的'a','1')
是单个元素

In [1]: list1 = [('a', '1'), ('b', '2'), ('c', '3')]

In [2]: list2 = [('d', '4'), ('e', '5'), ('f', '6')]

In [3]: for i in list1:
   ...:     list2.append(i)
   ...:     

In [4]: list2
Out[4]: [('d', '4'), ('e', '5'), ('f', '6'), ('a', '1'), ('b', '2'), ('c', '3')]

在您的情况下,只需使用
extend
方法:

list2.extend(list1)

您的列表确实是2d列表,但您想要的结果并不取决于此。因此,一个简单的扩展就足够了

list2+=list1
是有效的操作吗?@CMac:是的,它会正确。extend更好,但会修改列表。请向我们显示您使用的实际输入和代码。您正在显示的是
list1
list2
,而您的回溯讨论的是
final\u list
。对于您显示的输入和代码,您不应该得到任何错误。您的代码或输入中有一些您没有向我们展示的内容,这将严重阻碍我们帮助您的能力。您发布的代码不会产生您报告的错误。错误消息表明您的实际输入包含2个以上元素的序列。不是我,伙计。看起来也是一个很好的答案,所以不确定为什么有人会否决它注:
extend
适用于任何iterable。如果您知道您使用的是
list
s,那么执行
list2+=list1
就相当于调用
extend
(事实上,这应该是一个非常小的速度,因为它避免了查找)。