Попытка превратить внутренний и внешний кортежи во внутренний и внешний списки - PullRequest
2 голосов
/ 25 октября 2011

Хорошо, у меня есть информация в виде

(('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J'))

, и я хотел бы преобразовать ее в

[['A', 'B', 'C'], ['D', 'E', 'F'], ['H', 'I', 'J']]

Какой самый лучший / самый простой способ сделатьэто?

Ответы [ 5 ]

5 голосов
/ 25 октября 2011

Понимание списка:

tpl = (('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J'))

lst = [list(x) for x in tpl]
4 голосов
/ 25 октября 2011
a = (('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J'))
print map(list, a)

печать

[['A', 'B', 'C'], ['D', 'E', 'F'], ['H', 'I', 'J']]
3 голосов
/ 25 октября 2011
>>> data = (('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J'))
>>> [list(tup) for tup in data]
[['A', 'B', 'C'], ['D', 'E', 'F'], ['H', 'I', 'J']]
2 голосов
/ 25 октября 2011

Вот простое рекурсивное решение для любого количества вложенных кортежей:

>>> tup = (('A', ('B', 'C')), ('D', 'E', 'F', ('H', 'I', 'J')))
>>> listify = lambda x: map(listify, x) if isinstance(x, tuple) else x
>>> listify(tup)
[['A', ['B', 'C']], ['D', 'E', 'F', ['H', 'I', 'J']]]

Для Python 3 заменить map(listify, x) на list(map(listify, x)).

2 голосов
/ 25 октября 2011

Если вы знаете, что структура состоит только из двух уровней, попробуйте:

x = (('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J'))
y = [ list(t) for t in x ]

Если может быть более глубокое вложение, вам понадобится рекурсия - см. Ответ FJ.

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