我对python很陌生。
我想要一个正好有 10000 个大整数(任意精度)的数组。
我试着这样做:
M = []
M[0] = 1
M[1] = 1
for k in range(2,10001):
M[k] = ...
但我得到:
IndexError: list assignment index out of range
我应该使用什么数据结构,如何初始化它并为其保留空间?
我对python很陌生。
我想要一个正好有 10000 个大整数(任意精度)的数组。
我试着这样做:
M = []
M[0] = 1
M[1] = 1
for k in range(2,10001):
M[k] = ...
但我得到:
IndexError: list assignment index out of range
我应该使用什么数据结构,如何初始化它并为其保留空间?
该列表未正确初始化。
试试M = [0]*10000
。这将为您提供正确大小的列表。只需将 替换为0
您想要的任何默认值(或之后用正确的值覆盖它)。
与 JavaScript 不同,如果数组元素不存在,则不能按索引分配它们。我建议你简单地追加到数组:
M = []
for k in range(1,10001):
M.append(k)
如果密钥很重要并且您需要任意创建它们,请使用dict
:
M = {}
for k in range(1,10001):
M[k] = ...
预留空间:
M = [0] * 10000
那么你可以使用:
M[0] = 1 M[1] = 1
对于范围内的 k (2,10001):M[k] = ...
要使用大数组,您可以考虑使用Numpy作为包来进行数值计算以及大数组的高效存储和操作。你可以做这样的事情:
import numpy as np
M = np.arange(10000)
M[:2] = 1
为了留在纯 python 方面,我会这样做:
M = list(xrange(10000))
M[0] = 1
M[1] = 1
使用 IPython 的时间(推荐使用 python 的命令行解释器):
In [1]: %timeit M = list(range(10000))
10000 loops, best of 3: 195 us per loop
In [2]: %timeit M = list(xrange(10000))
10000 loops, best of 3: 190 us per loop
In [3]: %timeit M = np.arange(10000)
100000 loops, best of 3: 9.74 us per loop
代码
米=[];
m.append(1);
m.append(2);
m.append(3);
对于范围内的 k(2,1000):
m.append(k);
打印(米);
对于面向对象,这将有利于追加和删除 adv:操作简单,使用方便,灵活性高。