Python 对Int';s
我想做的事情不起作用: 国际贸易清单Python 对Int';s,python,list,int,immutability,mutable,Python,List,Int,Immutability,Mutable,我想做的事情不起作用: 国际贸易清单 BebossArray=[0 for i in xrange(1024)] 我的位函数(有所有常用的设置、清除、切换、测试,但此处已设置) 当然,这是行不通的。setBit中的赋值只创建了一个新对象,而DebossArray[index]保持在预期的位置。所以我知道INT是不可变的,所以我不能在适当的地方做改变 我所做的。。。(我不喜欢它,但它符合我的目的) 及 正如预期的那样工作,因为ctype.c_int32()是可变的,所以我可以就地修改它 我正在使
BebossArray=[0 for i in xrange(1024)]
我的位函数(有所有常用的设置、清除、切换、测试,但此处已设置)
当然,这是行不通的。setBit中的赋值只创建了一个新对象,而DebossArray[index]保持在预期的位置。所以我知道INT是不可变的,所以我不能在适当的地方做改变
我所做的。。。(我不喜欢它,但它符合我的目的)
及
正如预期的那样工作,因为ctype.c_int32()是可变的,所以我可以就地修改它
我正在使用2.7,但在项目的后期可能会使用3
DebossArray[index]=setBit(DebossArray[index],3)
构造类型
更多详情:
在某些地方我有DebossArray[x],在其他地方我有ButtonArray[x][y]
现在说到点子上;
正确的方法是什么?我认为您的操作过于复杂,只需返回结果并重新绑定原始名称:
def setBit(dint, offset):
mask = 1 << offset
return dint | mask
r = 0
r = setBit(r, 5)
# 32
def-setBit(力、偏移):
mask=1使用如下类:
class BebossArray(object):
def __init__(self):
self._l = [0 for i in xrange(1024)]
def setBit(self, index, offset):
self._l[index] = (self._l[index]|1 << offset)
类BebossArray(对象):
定义初始化(自):
self._l=[0表示X范围内的i(1024)]
def setBit(自身、索引、偏移):
你的意思是这样的吗
DebossArray = [0 for i in xrange(4)]
def setBit(dint, index, offset):
dint[index] |= 1 << offset
print DebossArray # [0, 0, 0, 0]
setBit(DebossArray, 2, 3)
print DebossArray # [0, 0, 8, 0]
DebossArray=[0代表xrange中的i(4)]
def立根点(力、索引、偏移):
dint[index]|=1我特别想避开r=setBit(r,5)构造。@Burtski好吧,这个和你的Debossaray[index]=setBit(Debossaray[index],3)
非常好,没有让它变得复杂……就像我想避开r=setBit(r,x)一样构造,这似乎是唯一干净的方法。
setBit(DebossArray[index],3]
DebossArray[index]=setBit(DebossArray[index],3)
def setBit(dint, offset):
mask = 1 << offset
return dint | mask
r = 0
r = setBit(r, 5)
# 32
i = 0
i |= (1 << 5)
# 32
class BebossArray(object):
def __init__(self):
self._l = [0 for i in xrange(1024)]
def setBit(self, index, offset):
self._l[index] = (self._l[index]|1 << offset)
DebossArray = [0 for i in xrange(4)]
def setBit(dint, index, offset):
dint[index] |= 1 << offset
print DebossArray # [0, 0, 0, 0]
setBit(DebossArray, 2, 3)
print DebossArray # [0, 0, 8, 0]