如何以编程方式确定列表的维度?谢谢。
请您参考如下方法:
对于一个简单的列表,你可以用 len 得到它的长度:
>>> l = [1, 2, 3, 4, 5]
>>> len(l)
5
对于最容易表示为嵌套列表的矩阵,您可以获取第一个子列表的长度,例如:
>>> matrix = [
[1, 2],
[3, 4],
[5, 6],
[7, 8],
[9, 10]]
>>> len(matrix)
5
>>> len(matrix[0])
2
考虑到 JBernardo 的评论,定义一个简单的 iterable 助手:
>>> def iterable(x):
if isinstance(x, basestring): return False
try:
iter(x)
except TypeError:
return False
return True
>>> iterable(4)
False
>>> iterable([1, 2, 3])
True
然后我们可以递归定义dimensionality函数:
>>> def dimensionality(l):
if not iterable(l): return 0
return 1 + dimensionality(l[0])
>>> dimensionality(0)
0
>>> dimensionality([1, 2, 3])
1
>>> dimensionality([[1,2], [2,3], [3,4]])
2
>>> dimensionality([[[1,2],[2,3]], [[2,3],[3,4]], [[3,4],[4,5]]])
3
您可以执行 isinstance(x, list) 或您想要的任何其他检查,而不是 iterable。编辑以排除字符串以避免 dimensionality('lol') 无限循环。
