python:如何从两个不同的列表中取出列表中的第一个列表,并将它们配对以使其成为单独的列表

问题描述 投票:0回答:4

当我写标题时,用一句话很难解释这一点。因此,我将立即跳至示例。

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']]

我尝试使用扩展,但是我想这不是使用添加或扩展的问题。我想我缺少了一个很小的部分,但是有人可以帮我吗?

python list
4个回答
2
投票

您可以改为以列表理解的方式加入子列表:

[a + b for a, b in zip(list1, list2)]

或将两个列表映射到list.__add__方法:

list(map(list.__add__, list1, list2))

1
投票

您正在做的是将初始列表附加到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]])

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操作。


0
投票

这应该解决。

for i, j in zip(list1,list2):
    a_list.append(i+j)

print (a_list)
[[1, 'abc'], [2, 'def'], [3, 'ghi']]
© www.soinside.com 2019 - 2024. All rights reserved.