Python char 数组声明[重复]

问题描述 投票:0回答:3

有没有办法在 python 中声明固定大小的 char 数组,例如在 C 中

char myArray[100]

我还想用 NULL 初始化所有字符。

python arrays char
3个回答
6
投票

你不能有固定大小的字符串。 (Python 不是这样工作的)。但您可以轻松地将字符串初始化为 100 个字符:

myArray = "\0" * 100

4
投票

您可以使用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'

请注意,我将默认值初始化为“”,因为在Python中你必须用一个值来初始化它,并且数组没有固定大小(它是动态的),但这样就可以了。

另一种选择是初始化数组并稍后追加值,因此它不会充满 NULL(Python 中为 None),而是空的并根据您的意愿增长:

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

2
投票

另一种方法是使用 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')
© www.soinside.com 2019 - 2024. All rights reserved.