[1, [2,3], [3,4]]
是一个 长度为 3 的一维列表,只不过它的三个元素分别是:int
对象 1
list
对象 [2,3]
list
对象 [3,4]
len(...)
看到的也是 3,没有任何第二维的“统一长度”概念。ndarray
。[1, [2,3], [3,4]]
1
,不是列表 → 长度不一致。索引 0: 1
索引 1: [2, 3]
索引 2: [3, 4]
matrix[i][j]
统一访问,因此只能叫 嵌套列表,而不是二维数组。“二维数组”只是几何形状的要求——矩形即可,并不要求元素类型相同
matrix = [[1, "a", 3.14], [2, "b", 2.71], [3, "c", 1.41]] # 3×3 矩形,但元素类型混用
matrix[i][j]
统一访问。ndarray
为了性能把数据紧挨着存成一块连续内存,需要统一 dtype。场景 | 形状要求 | 元素类型要求 |
---|---|---|
原生列表嵌套 | 矩形即可 | 随意 |
NumPy ndarray |
矩形 | 必须相同 dtype |