Хорошо, у меня есть информация в виде
(('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J'))
, и я хотел бы преобразовать ее в
[['A', 'B', 'C'], ['D', 'E', 'F'], ['H', 'I', 'J']]
Какой самый лучший / самый простой способ сделатьэто?
Понимание списка:
tpl = (('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J')) lst = [list(x) for x in tpl]
a = (('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J')) print map(list, a)
печать
>>> 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']]
Вот простое рекурсивное решение для любого количества вложенных кортежей:
>>> 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)).
map(listify, x)
list(map(listify, x))
Если вы знаете, что структура состоит только из двух уровней, попробуйте:
x = (('A', 'B', 'C'), ('D', 'E', 'F'), ('H', 'I', 'J')) y = [ list(t) for t in x ]
Если может быть более глубокое вложение, вам понадобится рекурсия - см. Ответ FJ.