对于某些函数来说,拥有一个很大的局部列表似乎会大大减慢该函数的速度,即使它没有接触到该列表。例如,通过同一个生成器函数的两个实例创建两个独立的列表,第二次大约慢2.5倍。如果在创建第二个列表之前删除了第一个列表,则两个迭代器将以相同的spee运行。destroying l1 here fixes the problem l2.append((c3, c4))
每个列表的长度约为310万条,但我在较小
所以,通过使用Numpy,我提高了整个过程的效率,但是为了弄清楚为什么原始进程运行得这么慢,我们做了一些类型检查,发现我在Numpy数组上循环,而不是Python列表。我唯一的想法是把一个Numpy数组更改为Python列表,我把它改回来了,它又变慢了。best of 3: 5.46 msec per loop
1000 loops, b
要在现有列表中复制嵌套列表,不幸的是,仅仅将其乘以是不够的,否则列表中将创建引用而不是独立的列表,请参见下面的示例:x[0] is x[1] # will evaluateevaluate to False (wanted behaviour)
这是一个很好的方法,以增加列表中的项目,而不只是创建参考,这也是解释多次在许多不同的网站。python -m timeit '[[1, 2, 3] for