Python char数组声明

时间:2016-01-08 11:06:00

标签: python arrays char

有没有办法在python中声明一个固定大小的char数组,例如在C中 char myArray[100]
我还想用NULL初始化所有字符。

3 个答案:

答案 0 :(得分:3)

您无法使用固定的大小的字符串。 (Python并不像那样工作)。但您可以轻松地将字符串初始化为100个字符:

myArray = "\0" * 100

答案 1 :(得分:2)

您可以使用array(python中的数组具有固定类型签名,但不是固定大小):

>>> import array
myArray = array.array('c', ['\0' for _ in xrange(100)])

>>> myArray
array('c', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
>>> myArray[45]
'\x00'

请注意,我将默认值初始化为' \ 0'在python中你必须用一个值初始化它,并且数组没有固定的大小(它是动态的)但是这样做。

另一种选择是初始化数组并在以后附加值,所以不是完全为NULL(在python中为None),它将只是空的并随意增长:

>>> a = array.array('c',)
>>> a
array('c')
>>> a.append('c')
>>> a
array('c', 'c')

答案 2 :(得分:0)

另一种方法是使用numpy.chararray

import numpy as np
myArray=np.chararray(100)
myArray[:]=0  #NULL is just a zero value

结果:

>>> myArray
chararray([b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0',
           b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0', b'0'],
          dtype='|S1')