如何在python中声明一个数组

时间:2016-03-20 12:33:05

标签: python arrays python-3.x

我想将值分配给不同的索引而不是按顺序方式(通过使用append),就像我们在哈希表中所做的那样。如何初始化给定大小的数组? 我做了什么:

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

有更好的方法吗? 另外,在c ++中是否有像memset()这样的函数?

3 个答案:

答案 0 :(得分:6)

正如评论中所提到的,初始化list(不是数组,不是Python中的类型,尽管有一个array模块用于更专业的用途)到一堆零只是:

a = [0] * 10000

如果您希望为此目的使用等效memset,例如,您想要将现有list的前1000个元素归零,则需要使用切片分配:

a[:1000] = [0] * 1000

答案 1 :(得分:3)

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

Python具有列表推导,可以从内联其他列表创建列表。因此,如果您创建一个包含10000个元素([0 for _ in range(10000)] )的列表,您可以轻松地从中创建一个包含10000个零的列表:

[0]*10000

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

可能更有效的方法是将列表与单个零乘以10000:

{{1}}

两者都会产生一个包含10000个零的列表。

答案 2 :(得分:1)

打电话给" memset"来自CPython

    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))