Сглаживание внутренних списков во вложенном списке - PullRequest
0 голосов
/ 17 июня 2020

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

Список идет,

A=[[[[a ,b], [e ,f]], [e, g]],
   [[[d, r], [d, g]], [l, m]],
   [[[g, d], [e, r]], [g, t]]]

Я бы хотел сгладить вложенный список, который появляется в первой позиции каждого подсписка в A, чтобы результат выглядел так:

A= [[[a ,b], [e ,f], [e, g]],
    [[d, r], [d, g], [l, m]],
    [[g, d], [e, r], [g, t]]]

Я не уверен, какой код использовать для этого , поэтому любая помощь приветствуется.

Ответы [ 4 ]

2 голосов
/ 17 июня 2020

Вы можете использовать понимание списка с распаковкой , чтобы сгладить этот первый внутренний список:

A[:] = [[*i, j] for i,j in A]

Для питонов старше 3.0:

[i+[j] for i,j in A]

print(A)

[[['a', 'b'], ['e', 'f'], ['e', 'g']],
 [['d', 'r'], ['d', 'g'], ['l', 'm']],
 [['g', 'd'], ['e', 'r'], ['g', 't']]]
1 голос
/ 17 июня 2020

Думаю, это максимально просто:

[*map(lambda x: x[0] + [x[1]], A)]
[[['a', 'b'], ['e', 'f'], ['e', 'g']],
 [['d', 'r'], ['d', 'g'], ['l', 'm']],
 [['g', 'd'], ['e', 'r'], ['g', 't']]]
1 голос
/ 17 июня 2020

Попробуйте следующее:

B = [[*el[0], el[1]] for el in A]
print(B)

Вывод:

[[['a', 'b'], ['e', 'f'], ['e', 'g']],
 [['d', 'r'], ['d', 'g'], ['l', 'm']],
 [['g', 'd'], ['e', 'r'], ['g', 't']]]

В качестве альтернативы, для Python 2 (оператор звездочки * здесь не ведет себя таким же образом):

B = list(map(lambda x: [x[0][0], x[0][1], x[1]], A))

Вы можете Попробуйте онлайн!

0 голосов
/ 17 июня 2020

Немного многословно, но работает:

import itertools

container = [list(itertools.chain(i[0] + [i[1]])) for i in A]

print(container)

Результат:

[[['a', 'b'], ['e', 'f'], ['e', 'g']], 
 [['d', 'r'], ['d', 'g'], ['l', 'm']], 
 [['g', 'd'], ['e', 'r'], ['g', 't']]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...