社交做的最好的网站,做网站賺钱,wordpress图标字体不显示,重庆网站制作服务(tl#xff1b;dr#xff1a;对您的问题的确切答案是numpy.empty或numpy.empty_like#xff0c;但是您可能不在乎#xff0c;可以使用myList [None]*10000。)简单方法您可以将列表初始化为所有相同的元素。使用一个非数字值(如果以后使用它会给出一个错误#xff0c;这是…(tldr对您的问题的确切答案是numpy.empty或numpy.empty_like但是您可能不在乎可以使用myList [None]*10000。)简单方法您可以将列表初始化为所有相同的元素。使用一个非数字值(如果以后使用它会给出一个错误这是一件好事)或类似于0(不寻常)的东西是否在语义上有意义如果您正在编写稀疏矩阵或“默认”值应为0且不担心错误则可能有用)取决于您 [None for _ in range(10)][None, None, None, None, None, None, None, None, None, None](这里_只是一个变量名您可以使用i。)您也可以这样做 [None]*10[None, None, None, None, None, None, None, None, None, None]你可能不需要优化这个。还可以在每次需要时追加到数组中 x [] for i in range(10): x.append(i)简单方法的性能比较哪个最好 def initAndWrite_test():... x [None]*10000... for i in range(10000):... x[i] i... def initAndWrite2_test():... x [None for _ in range(10000)]... for i in range(10000):... x[i] i... def appendWrite_test():... x []... for i in range(10000):... x.append(i)在python2.7中的结果 import timeit for f in [initAndWrite_test, initAndWrite2_test, appendWrite_test]:... print({} takes {} usec/loop.format(f.__name__, timeit.timeit(f, number1000)*1000))...initAndWrite_test takes 714.596033096 usec/loopinitAndWrite2_test takes 981.526136398 usec/loopappendWrite_test takes 908.597946167 usec/looppython 3.2中的结果initAndWrite_test takes 641.3581371307373 usec/loopinitAndWrite2_test takes 1033.6499214172363 usec/loopappendWrite_test takes 895.9040641784668 usec/loop如我们所见在python2和python3中使用习惯用法[None]*10000可能更好。然而如果一个人正在做比赋值更复杂的事情(比如生成或处理列表中的每个元素都很复杂的事情)那么开销将成为毫无意义的成本的一小部分。也就是说如果您对列表中的元素做了任何合理的处理那么这样的优化还为时过早。未初始化内存这些都是无效的因为它们通过内存在过程中写东西。在C语言中这是不同的未初始化的数组充满了随机垃圾内存(附带说明它已经从系统中重新分配当您分配或未能锁定和/或在关闭程序时未能删除内存时它可以是security risk)。这是一个为加速而设计的选择C语言的制作者认为最好不要自动初始化内存这是正确的选择。这不是渐进加速(因为它是O(N))但例如在覆盖实际关心的内容之前您不需要首先初始化整个内存块。如果可能的话这相当于(伪代码)x list(size10000)。如果您想在python中使用类似的东西可以使用numpy数值矩阵/N维数组操作包。具体来说^{}或^{}这才是你问题的真正答案。