python: как извлечь первый список из списка из двух разных списков и объединить их в один список - PullRequest
0 голосов
/ 27 октября 2019

было действительно трудно объяснить это в одном предложении, когда я писал заголовок. Итак, я сразу перейду к примеру.

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

Я пытался использовать расширение, но я полагаю, что дело не в добавлении или расширении. Я думаю, что мне не хватает одной крошечной детали, но кто-нибудь может мне помочь?

Ответы [ 4 ]

3 голосов
/ 27 октября 2019

Вместо этого вы можете присоединиться к подспискам в понимании списка:

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

или сопоставить два списка методу list.__add__:

list(map(list.__add__, list1, list2))
2 голосов
/ 27 октября 2019

То, что вы делаете, это добавление начальных списков к 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]])
1 голос
/ 27 октября 2019

Это должно решить.

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

print (a_list)
[[1, 'abc'], [2, 'def'], [3, 'ghi']]
1 голос
/ 27 октября 2019

Вам нужна только одна переменная при итерации по 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...