首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中声明数组

问如何在python中声明数组
EN

Stack Overflow用户
提问于 2016-03-20 20:33:05
回答 3查看 19.5K关注 0票数 4

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

代码语言:javascript
复制
a=[]
for x in range(0,10000):
       a.append(0)

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-20 21:14:09

正如注释中所指出的,将list (不是数组,这不是Python语言中的类型,尽管有一个array模块用于更特殊的用途)初始化为一堆零:

代码语言:javascript
复制
a = [0] * 10000

如果你想要一个等同于memset的东西,比如说,你想将现有list的前1000个元素清零,你可以使用切片赋值:

代码语言:javascript
复制
a[:1000] = [0] * 1000
票数 6
EN

Stack Overflow用户

发布于 2016-03-20 21:12:57

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

Python具有列表理解,它可以从其他列表内联地创建列表。因此,如果您创建了一个包含10000个元素的列表(range(10000)),则可以很容易地创建一个包含10000个零的列表:

代码语言:javascript
复制
[0 for _ in range(10000)]

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

也许更有效的方法是将列表中的单个0乘以10000:

代码语言:javascript
复制
[0]*10000

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

票数 3
EN

Stack Overflow用户

发布于 2016-03-20 21:02:40

CPython调用了"memset“:

代码语言:javascript
复制
    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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36113747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档