首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python:检查列表是多维的还是一维的

python:检查列表是多维的还是一维的
EN

Stack Overflow用户
提问于 2013-04-13 15:27:17
回答 4查看 58.7K关注 0票数 11

我目前正在用python编程,我创建了一个方法,输入来自用户的列表,而不知道他是多维的还是一维的。我该怎么检查?示例:

代码语言:javascript
复制
def __init__(self,target):    
    for i in range(len(target[0])):
        w[i]=np.random.rand(len(example[0])+1)

目标是列表。问题是目标可能是int。

EN

回答 4

Stack Overflow用户

发布于 2013-04-13 15:42:00

我想你只是想要isinstance

示例用法:

代码语言:javascript
复制
>>> a = [1, 2, 3, 4]
>>> isinstance(a, list)
True
>>> isinstance(a[0], list)
False
>>> isinstance(a[0], int)
True
>>> b = [[1,2,3], [4, 5, 6], [7, 8, 9]]
>>> isinstance(b[0], list)
True
票数 21
EN

Stack Overflow用户

发布于 2013-04-13 15:47:50

根据注释,您无论如何都要将输入转换为numpy数组。由于np.array已经计算出输入列表的嵌套深度,因此从该数组中找出维数比从嵌套列表中找出维数更容易。

具体地说,数组有一个shape属性,它是数组沿每个维度的长度的元组,因此len(myarray.shape)将告诉您维数。例如,

代码语言:javascript
复制
>>> import numpy as np
>>> a = np.array([[1,2,3],[1,2,3]])
>>> len(a.shape)
2
票数 11
EN

Stack Overflow用户

发布于 2015-11-20 20:18:45

如果你想知道一个列表有多少个维度,你可以使用下面这段代码:

代码语言:javascript
复制
def test_dim(testlist, dim=0):
   """tests if testlist is a list and how many dimensions it has
   returns -1 if it is no list at all, 0 if list is empty 
   and otherwise the dimensions of it"""
   if isinstance(testlist, list):
      if testlist == []:
          return dim
      dim = dim + 1
      dim = test_dim(testlist[0], dim)
      return dim
   else:
      if dim == 0:
          return -1
      else:
          return dim
a=[]
print test_dim(a)
a=""
test_dim(a)
print test_dim(a)
a=["A"]
print test_dim(a)
a=["A", "B", "C"]
print test_dim(a)
a=[[1,2,3],[1,2,3]]
print test_dim(a)
a=[[[1,2,3],[4,5,6]], [[1,2,3],[4,5,6]], [[1,2,3],[4,5,6]]]
print test_dim(a)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15985389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档