[1, [2,3], [3,4]] 是一个 长度为 3 的一维列表,只不过它的三个元素分别是:int 对象 1list 对象 [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 |
概念模型:在内存中和逻辑上,序列确实被实现为一维的连续(或逻辑连续)存储。