You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何最简/快速初始化10×100000的None多维数组?

10×100,000数组的最简/最快初始化方案

嘿,这个问题问到点子上了!在Python里初始化二维数组,既要简洁高效,还得避开浅拷贝引用的坑——毕竟你已经知道[None,] * cols是初始化单列的好办法,但直接嵌套乘法会踩雷。下面分两种场景给你最优方案:

一、纯Python环境(无需第三方库)

最简且安全的写法

如果你要的是每行独立的列表(避免改一行全变的问题),用列表推导式是最优选择:

rows = 10
cols = 100000
arr = [[None] * cols for _ in range(rows)]

为什么不能用[[None]*cols]*rows?因为后者的所有行其实都是同一个列表的引用!比如你修改arr[0][0] = 5,会发现所有行的第一个元素都变成5——这是因为外层乘法只是复制了列表的引用,而非创建新列表。而列表推导式会为每一行生成一个全新的[None]*cols列表,完全安全。

速度优化小细节

[None] * cols本身是Python里初始化固定值列表最快的方式之一(底层直接分配内存,而非循环逐个添加),搭配推导式的10次循环,整体效率已经非常高,几乎没有额外开销。

二、追求极致速度(适合数值运算场景)

如果你的数组后续要做数值计算,直接用numpy会比纯Python列表快几个数量级,初始化也更高效:

import numpy as np
arr = np.full((10, 100000), None)  # 生成object类型数组,存储None
# 如果是数值类型(比如0、1),用专用函数会更快:
# arr = np.zeros((10, 100000), dtype=int)
# arr = np.ones((10, 100000), dtype=float)

numpy的初始化函数是底层C实现的,处理大尺寸数组时优势明显,而且后续的切片、运算操作都比纯Python列表高效得多。

总结

  • 纯Python下最简+安全:列表推导式[[None]*cols for _ in range(rows)]
  • 追求最快速度:优先用numpy的专用初始化函数

内容的提问来源于stack exchange,提问作者David542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:47:48