2016-01-08 3 views
0

Есть ли способ, чтобы объявить массив символов фиксированного размера в питоне, как и в C, например
char myArray[100]
Я также хочу initializa всех символов с NULL.Python голец объявление массива

+0

Может эта нить помогает: HTTP: // stackoverflow.com/questions/6142689/initialising-an-array-of-fixed-size-in-python –

+0

Или вы можете проверить этот [один] (http://stackoverflow.com/questions/6376886/what-is-the -быть st-way-to-create-a-string-array-in-python) – MaTh

+1

Какое преимущество вы ожидаете? – monkut

ответ

2

Вы не можете имеют фиксированный размер. (Python не работает так). Но вы можете легко инициализировать строку до 100 символов:

myArray = "\0" * 100 
1

Вы можете использовать array (массив в питоне закрепила сигнатуру типа, но не фиксированный размер):

>>> 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» Кауса в питоне необходимо инициализировать его с значение и массив не имеют фиксированного размера (это динамический), но это будет сделано.

Другой вариант заключается в инициализации массива и appende значения позже, поэтому вместо того, чтобы полный NULL (None в питоне) это будет просто пустым и расти по вашему желанию:

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

Это сделало трюк, хотя мне пришлось преобразовать массив в строку сначала, используя функцию tostring(). – wahab

+0

приятное, счастливое кодирование :) – Netwave

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') 
Смежные вопросы