【问题标题】:how change array with in array如何在数组中更改数组
【发布时间】:2019-03-31 19:54:17
【问题描述】:

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

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

【问题讨论】:

  • 这篇文章可能传达了太多的误解。您可能应该退后一步,多阅读一下您正在使用的库(和语言)。
  • 看起来您有列表和元组,但没有 numpy 数组。任何显示都没有 1d 或 2d,只是不同程度的列表嵌套。像 03 这样的项目是模棱两可的。
  • 向我们展示您到目前为止所写的内容。可能你是在建议一个最好用递归解决的问题,但到目前为止还不清楚。考虑使用pprint() 来显示数组:docs.python.org/3/library/pprint.html

标签: python python-3.x numpy


【解决方案1】:

如果我复制粘贴你的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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多