как изменить массив с в массиве - PullRequest
0 голосов
/ 31 марта 2019

я использую массив и получаю одномерное значение, как показано ниже

 a=[(2, 1, [[0, 3]]), (5, 2, [[0, 2], [2, 3]]), (8,    3, [[0, 0], [2, 1], [3, 2]]), (10, 1, [[1, 3]]), (12, 4, [[0, 1], [1, 0], [2, 2], [3, 0]]), (15, 3, [[1, 1], [2, 0], [3, 1]])]

как изменить его на двумерное

b=[(2, 1, [[0, 3]])
(5, 2, [[0, 2], [2, 3]])
(8, 3, [[0, 0], [2, 1],[3, 2]]),
(12, 4, [[0, 1], [1, 0], [2, 2], [3, 0]])]

, а затем преобразовать в другой способ, например

c=[(2, 1, 03),(5, 2, 02, 23),(8, 3, 00, 21, 32),(12, 4, 01, 10, 22, 30)]

1 Ответ

1 голос
/ 01 апреля 2019

Если я скопирую и вставлю вашу a:

In [899]: a=[(2, 1, [[0, 3]]), (5, 2, [[0, 2], [2, 3]]), (8,    3, [[0, 0], [2, 
     ...: 1], [3, 2]]), (10, 1, [[1, 3]]), (12, 4, [[0, 1], [1, 0], [2, 2], [3, 
     ...: 0]]), (15, 3, [[1, 1], [2, 0], [3, 1]])]

ipython, то она напечатает как:

In [900]: a                                                                     
Out[900]: 
[(2, 1, [[0, 3]]),
 (5, 2, [[0, 2], [2, 3]]),
 (8, 3, [[0, 0], [2, 1], [3, 2]]),
 (10, 1, [[1, 3]]),
 (12, 4, [[0, 1], [1, 0], [2, 2], [3, 0]]),
 (15, 3, [[1, 1], [2, 0], [3, 1]])]

Простой интерпретатор python может отобразить то же самоеКстати, это проблема отображения, а не структуры данных.

Если я определю функцию, которая принимает один из внутренних кортежей и возвращает комбинацию из двух значений:

In [901]: def comb(alist): 
     ...:     return str(alist[0])+str(alist[1]) 
     ...:               

Я могу применить его к вашему списку с этим пониманием списка:

In [903]: [(i,j,*[comb(x) for x in k]) for i,j,k in a]                          
Out[903]: 
[(2, 1, '03'),
 (5, 2, '02', '23'),
 (8, 3, '00', '21', '32'),
 (10, 1, '13'),
 (12, 4, '01', '10', '22', '30'),
 (15, 3, '11', '20', '31')]

Вы можете написать свою собственную функцию comb.Это кажется самым близким к вашему c, за исключением кавычек.Но нет никакого способа создать 03, кроме как сделать его строкой.

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