Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对Int';s_Python_List_Int_Immutability_Mutable - Fatal编程技术网

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]