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
(事实上,这应该是一个非常小的速度,因为它避免了查找)。