如何在python中声明一个数组

How to declare an array in python

本问题已经有最佳答案,请猛点这里访问。

我希望将值分配给不同的索引,而不是按顺序分配(通过使用append),就像在哈希表中那样。如何初始化给定大小的数组?我的工作:

1
2
3
a=[]
for x in range(0,10000):
       a.append(0)

有更好的方法吗?另外,C++中是否还有MeSET()函数呢?


如注释所述,初始化一个list(不是一个数组,这不是python中的类型,尽管有一个array模块可供更专门的使用),但将它初始化为一堆零只是:

1
a = [0] * 10000

如果您希望等效于memset,例如,您希望将现有list的前1000个元素归零,那么您将使用切片分配:

1
a[:1000] = [0] * 1000

可以通过多种方式初始化给定大小的列表。

python有列表理解,它从其他内联列表创建列表。因此,如果您用10000个元素(range(10000)组成一个列表,您可以很容易地用10000个零组成一个列表:

1
[0 for _ in range(10000)]

这与您的原始解决方案非常接近。

也许更有效的方法是用一个零乘以10000:

1
[0]*10000

两者都将生成一个包含10000个零的列表。


CPython有一个对"memset"的调用:

1
2
3
4
5
6
7
8
9
10
    from cpython cimport array
    import array

    cdef array.array a = array.array('i', [1, 2, 3])

    # access underlying pointer:
    print a.data.as_ints[0]

    from libc.string cimport memset
    memset(a.data.as_voidptr, 0, len(a) * sizeof(int))