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

用于列表列表的Python size()和len(),python,numpy,Python,Numpy,我有一份清单: a = [[1, 0], 'apple', 5] 为什么size(a[0])即使a不是numpy数组也能工作 我以为大小只适用于阵列 谢谢 size[a[0]]不应该工作,但是size(a[0])应该工作。您只需查看np.size的源代码即可: def size(a, axis=None): [docstring removed] if axis is None: try: return a.size e

我有一份清单:

a = [[1, 0], 'apple', 5]
为什么
size(a[0])
即使
a
不是
numpy数组也能工作

我以为大小只适用于阵列


谢谢

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]

传递列表时,
保持其默认值
None
,函数尝试获取
a.size
。因为它不存在,所以它使用
asarray(a)
将列表转换为一个数组,并以这种方式获取大小。在您的例子中,它将生成一个1-D numpy数组,其中的数据类型为
对象

Wow。我在这个论坛上发布的第一个问题,实际上我得到了一个非常有洞察力的答案。谢谢