首页 > 解决方案 > 如何在数组中更改数组

问题描述

我使用数组并获得一维,如下所示

 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)]

标签: pythonpython-3.xnumpy

解决方案


如果我复制粘贴您的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 解释器可能会以相同的方式显示它,但这只是一个显示问题,而不是数据结构问题。

如果我定义一个函数,该函数采用内部元组之一并返回 2 个值的组合:

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但是除了把它变成一个字符串之外,没有办法产生 a 。


推荐阅读