【问题标题】:Finding the dimension of a nested list in python在python中查找嵌套列表的维度
【发布时间】:2014-12-13 04:10:42
【问题描述】:

我们可以在python中使用嵌套列表创建多维数组,例如:

A = [[1,2,3],
     [2,1,3]]

等等。 在这种情况下,它是简单的 nRows= len(A) 和 nCols=len(A[0])。但是,当我有超过三个维度时,它会变得复杂。

A = [[[1,1,[1,2,3,4]],2,[3,[2,[3,4]]]],
     [2,1,3]]

等等。 这些列表在 Python 中是合法的。并且维度的数量不是先验的。 在这种情况下,如何确定维度的数量以及每个维度中的元素数量。

我正在寻找一种算法以及可能的实现。我相信它有一些类似于 DFS 的东西。有什么建议吗?

P.S.:我不是在寻找任何现有的软件包,尽管我想了解它们。

【问题讨论】:

  • 您的第二个示例不一致是多维的。考虑将numpy 用于此类事情,您可以只要求对象的shape
  • 你想要的更多的是一棵树而不是一个数组(它甚至不是一个锯齿状数组)。要使其成为一个数组,您应该有一个值列表列表,而不是值列表或 other 列表。树的定义是一个结构,其中每个节点都有一个集合,其中每个项目都是叶子或另一个节点,因此是递归的。
  • 我知道给出的例子是不一致的多维的。考虑一个案例,如果我们要检查给定的数据是一个正确的数组(如果你需要一个实际的例子)但是,正如我稍后提到的,目标是找到算法。我知道 numpy.py 但我正在寻找算法。
  • @heltonbiker:我同意你的看法。它更像是一棵树而不是一个数组。在这种情况下,我们可以构建一棵树,并可能将维度确定为每个节点中的值。但这会很慢。我正在寻找一种有效的算法......不使用像 numpy 或 SciPy 这样的包。
  • 如果您将算法应用于您发布的这个示例,结果会是什么,为什么?

标签: python algorithm matrix multidimensional-array


【解决方案1】:

我相信自己已经解决了问题。 这只是一个简单的 DFS。

对于上面给出的例子:A = [[[1,1,[1,2,3,4]],2,[3,[2,[3,4]]]], [2,1,3]] 答案如下: [[3, 2, 2, 2, 3, 4], [3]] 维度总数为7。

我想我想多了……还是谢谢……!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2015-05-17
    • 2016-02-29
    • 2016-03-04
    相关资源
    最近更新 更多