在python中初始化数组

在python中初始化数组,python,arrays,Python,Arrays,我是python新手,正在努力弄清楚如何将unicode字符数组初始化为特定大小。我希望使用数组而不是列表,因为我希望O(1)随机访问和O(1)摊销插入成本。到目前为止,我有: from arrays import * a = array('u') 但显然这是一个零长度数组 谢谢, Aly这将创建一个初始化为“unicode字符串”的新数组 如果只希望将其初始化为特定大小,可以执行以下操作: a = array('u', u'\0' * size) 这将初始化一个unicode字符数组,其大

我是python新手,正在努力弄清楚如何将unicode字符数组初始化为特定大小。我希望使用数组而不是列表,因为我希望O(1)随机访问和O(1)摊销插入成本。到目前为止,我有:

from arrays import *
a = array('u')
但显然这是一个零长度数组

谢谢,
Aly

这将创建一个初始化为
“unicode字符串”
的新数组

如果只希望将其初始化为特定大小,可以执行以下操作:

a = array('u', u'\0' * size)

这将初始化一个unicode字符数组,其大小
size
初始化为空字符。

列表提供O(1)随机访问和铠装O(1)附加(请参阅)。数组不提供任何额外的功能(它们只去除了常量因子),甚至可能更糟糕。数组和列表都需要在插入序列中添加元素(添加一个新项目,而不是覆盖现有的一个)。我不知道有哪种数据结构提供了最坏情况下的O(1)访问(表被铠装化了O(1))和无处不在的铠装化O(1)插入。请澄清一下,我一直在想,为什么python没有一个标准的方法来实现这一点,对于普通的列表也是如此。我通常使用[None]*100或类似的工具。@delnan我不介意使用列表tbh,因为我现在已经意识到它们就像Java ArrayList一样,我正在实现一个间隙缓冲区,所以将列表加倍并自己进行coppies是有用的,而不仅仅是追加。这也是我想到的第一件事,但我仍然觉得它在我的眼睛上是相当不安的。您需要为要复制的伪值分配伪值数组的长度。虽然这是一个常数因子,但它仍然是不必要的。array.array('u',(u'\0'表示xrange(100))中的u)通过生成器表达式也可以工作,但我仍然感觉到,模块内部只是对每个项执行附加操作。
a = array('u', u'\0' * size)