它不应该那么难.我的意思是在C,
int a[10];
Run Code Online (Sandbox Code Playgroud)
是你所需要的全部.如何为随机大小创建全零的数组.我知道NumPy中的零()函数,但必须有一个简单的内置方法,而不是另一个模块.
cat*_*try 27
两种方式:
x = [0] * 10
x = [0 for i in xrange(10)]
Run Code Online (Sandbox Code Playgroud)
编辑:取代range
通过xrange
避免造成另一个列表.
另外:正如许多其他人已经注意到包括Pi和Ben James,这创建了一个list
,而不是Python数组.虽然列表在许多情况下足够且容易,但对于性能关键用途(例如,当在数千个对象中重复时),您可以查看python数组.查找array
模块,如本主题中的其他答案中所述.
yu_*_*sha 25
如果您对列表不满意(因为它们可以包含任何内容并占用太多内存),您可以使用高效的整数数组:
import array
array.array('i')
Run Code Online (Sandbox Code Playgroud)
看到这里
如果你需要初始化它,
a = array.array('i',(0 for i in range(0,10)))
Run Code Online (Sandbox Code Playgroud)
使用阵列模块.有了它,您可以有效地存储相同类型的集合.
>>> import array
>>> import itertools
>>> a = array_of_signed_ints = array.array("i", itertools.repeat(0, 10))
Run Code Online (Sandbox Code Playgroud)
有关更多信息 - 例如不同类型,请查看阵列模块的文档.对于多达100万个条目,这应该感觉非常活泼.对于1000万个条目,我的本地机器认为1.5秒.
array.array的第二个参数是一个生成器,它在读取时构造定义的序列.这样,阵列模块可以逐个消耗零,但生成器只使用常量内存.如果序列变长,这个生成器不会变大(内存方面).阵列当然会增长,但这应该是显而易见的.
你就像列表一样使用它:
>>> a.append(1)
>>> a.extend([1, 2, 3])
>>> a[-4:]
array('i', [1, 1, 2, 3])
>>> len(a)
14
Run Code Online (Sandbox Code Playgroud)
...或者只是将其转换为列表:
>>> l = list(a)
>>> len(l)
14
Run Code Online (Sandbox Code Playgroud)
出奇
>>> a = [0] * 10000000
Run Code Online (Sandbox Code Playgroud)
在构造上比阵列方法更快.去搞清楚!:)
归档时间: |
|
查看次数: |
233615 次 |
最近记录: |