Что я хочу сделать, но это не работает: Список целых...
BebossArray=[0 for i in xrange(1024)]
Мои битовые функции (есть все обычные set,clear,toggle, test но здесь установлено)
def setBit(dint, offset):
mask = 1 << offset
dint=(dint|mask)
return
поэтому я хотел бы установить бит в одном из целых чисел в списке...
setBit(DebossArray[index],3)
Это, конечно, не работает. Назначение в setBit просто создает новый объект, а DebossArray[index] остается на месте, как и ожидалось. Итак, я понимаю, что INT неизменяемы, поэтому я не могу внести изменения на месте.
Что я сделал... (мне это не нравится, но для моих целей работает)
DebossArray=[ctypes.c_int32() for x in xrange(1024)]
а также
def setBit(dint, offset):
mask = 1 << offset
dint.value=(dint.value|mask)
return
а сейчас
setBit(DebossArray[index],3]
работает так, как ожидалось, потому что ctype.c_int32() является изменяемым, поэтому я могу изменить его на месте.
Я использую 2.7, но обновление до 3, вероятно, произойдет позже в проекте. Я также стараюсь держаться подальше от
DebossArray[index]=setBit(DebossArray[index],3)
тип конструкции.
Более подробно: в некоторых местах у меня есть DebossArray[x], а в других местах у меня есть ButtonArray[x][y]
А теперь к делу; Каков правильный способ сделать это?