当我写标题时,用一句话很难解释这一点。因此,我将立即跳至示例。
list1=[[1],[2],[3]]
list2=[['abc'],['def'],['ghi']]
a_list=[]
for i,j in zip(list1,list2):
a_list.append(i)
a_list.append(j)
print (a_list)
Acutal output:
[[1], ['abc'], [2], ['def'], [3], ['ghi']]
上面的代码给了我上面的输出。但是我想得到的是下面的输出。
Expected output:
[[1,'abc'], [2,'def'], [3,'ghi']]
我尝试使用扩展,但是我想这不是使用添加或扩展的问题。我想我缺少了一个很小的部分,但是有人可以帮我吗?
您可以改为以列表理解的方式加入子列表:
[a + b for a, b in zip(list1, list2)]
或将两个列表映射到list.__add__
方法:
list(map(list.__add__, list1, list2))
您正在做的是将初始列表附加到a_list
,而不是值。相反,您需要做的是将它们串联起来,然后像这样附加到结果中:
for i,j in zip(list1,list2):
a_list.append(i + j)
另一个解决方案是附加一个包含每个初始列表的第一项的列表。
for i,j in zip(list1,list2):
a_list.append([i[0], j[0]])
通过zip
迭代时只需要一个变量:
In [17]: for i in zip(list1, list2):
...: print(i)
...:
([1], ['abc'])
([2], ['def'])
([3], ['ghi'])
然后:
In [20]: for i in zip(list1, list2):
...: a_list.append(i)
In [21]: a_list
Out[21]: [([1], ['abc']), ([2], ['def']), ([3], ['ghi'])]
由于您一次拉两个元素,因此实际上是在分离元素并取消zip操作。
这应该解决。
for i, j in zip(list1,list2):
a_list.append(i+j)
print (a_list)
[[1, 'abc'], [2, 'def'], [3, 'ghi']]