Преобразование вложенного списка в Python - PullRequest
0 голосов
/ 22 августа 2009

Предположим, у меня есть такая структура:

a = [
('A',
 ['D',
  'E',
  'F',
  'G']),
('B',
 ['H']),
('C',
 ['I'])
]

Как я могу преобразовать это в:

a = [
('A', 'D'),
('A', 'E'),
('A', 'F'),
('A', 'G'),
('B', 'H'),
('C', 'I'),
]

Спасибо за ваше время!

Ответы [ 3 ]

10 голосов
/ 22 августа 2009

Попробуйте:

>>> a = [('A', ['D', 'E', 'F', 'G']), ('B', ['H']), ('C', ['I'])]
>>> [(k,j) for k, more in a for j in more]
[('A', 'D'), ('A', 'E'), ('A', 'F'), ('A', 'G'), ('B', 'H'), ('C', 'I')]

Конечно, это только один уровень вложенности.

4 голосов
/ 22 августа 2009

Вот простое решение:

data = [
('A',
  ['D',
  'E',
  'F',
  'G']),
('B',
  ['H']),
('C',
  ['I'])
]

result = []

for x in data:
    for y in x[1]:
        result.append((x[0], y))
1 голос
/ 23 августа 2009

(Дополнительный комментарий) С какой стати вы сделали такой отступ? Разве следующее не более читабельно?

a = [
('A', ['D', 'E', 'F', 'G']),
('B', ['H']),
('C', ['I'])
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...