用于列表列表的Python size()和len()

时间:2014-01-22 05:36:06

标签: python numpy

我有一个清单:

a = [[1, 0], 'apple', 5]

为什么size(a[0])即使a不是numpy array也能正常工作?

我认为尺寸仅适用于阵列?

谢谢!

1 个答案:

答案 0 :(得分:2)

size[a[0]]不应该有效,但size(a[0])应该有效。您只需查看np.size的来源:

def size(a, axis=None):
    [docstring removed]

    if axis is None:
        try:
            return a.size
        except AttributeError:
            return asarray(a).size
    else:
        try:
            return a.shape[axis]
        except AttributeError:
            return asarray(a).shape[axis]

当您传递列表时,axis保持默认值None,该函数会尝试获取a.size。由于它不存在,它使用asarray(a)将列表转换为数组,并以此方式获取大小。在您的情况下,它将生成dtype object的1-D numpy数组。