有没有办法在python中声明一个固定大小的char数组,例如在C中
char myArray[100]
我还想用NULL初始化所有字符。
答案 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')