特别是在变量列表中存储新值 - Python3

时间:2017-07-16 17:51:30

标签: python arrays list variables

所以,我正在设计一个用于模拟CPU的标记系统。基本上,我有这个:

nFlag = False
vFlag = False
UFLAG = True
bFlag = True
DFLAG = False
iFlag = True
zFlag = False
cFlag = True

flags = [nFlag, vFlag, UFLAG, bFlag, DFLAG, iFlag, zFlag, cFlag]

基本上,我希望能够根据具体情况覆盖列表/数组的各个元素的bool。例如:

if condition == True:
    flags[0] = True

预期的结果是nFlag等于True但仍然在列表中。

这可能吗?

2 个答案:

答案 0 :(得分:0)

很难理解你的意思。我认为你的意思是你想要同时更改nFlag的值及其在列表中的相应条目。

答案是否定的,你不能这样做。但你不想。不要使用单独的变量,只需使用列表;或者,更好的是,使用字典:

flags = dict(
    nFlag=False
    vFlag=False
    UFLAG=True
    bFlag=True
    DFLAG=False
    iFlag=True
    zFlag=False
    cFlag=True
)

现在你可以做flags['nFlag'] = True,例如。

答案 1 :(得分:0)

没有。布尔值在Python中是不可变的(和单例),因此布尔变量不能以您描述的方式更新。一个更好的实现是使用字典,如

flags = {'nFlag': False, 'vFlag': False, 'UFLAG': True, 'bFlag': True, 'DFLAG': False, 'iFlag': True, 'zFlag': False, 'cFlag': True}

然后更新值

if condition:  # Note: No need to compare explicitly to True
    flags['nFlag'] = True