0

假设我有一个名为 的列表list,它由布尔值组成。还说我有一些(有效的)索引i,这是list我想要切换值的索引。

目前,我有:list[i] = not list[i]

但我的问题是,这不是迭代list两次吗?如果是这样,有没有办法通过别名设置临时值以仅遍历列表一次?

我尝试了以下方法:

temp = list[i]
temp = not temp

但这对我不起作用,它只切换了 的值temp,而不是 的值list[i]

4

1 回答 1

0

dis您可以使用模块https://docs.python.org/3/library/dis.html在“幕后”进行一些观察

import dis


boolst = [True, True, True, True, True]

dis.dis('boolst[2] = not boolst[2]')
  1           0 LOAD_NAME                0 (boolst)
              2 LOAD_CONST               0 (2)
              4 BINARY_SUBSCR
              6 UNARY_NOT
              8 LOAD_NAME                0 (boolst)
             10 LOAD_CONST               0 (2)
             12 STORE_SUBSCR
             14 LOAD_CONST               1 (None)
             16 RETURN_VALUE

dis.dis('boolst[2] ^= True')
  1           0 LOAD_NAME                0 (boolst)
              2 LOAD_CONST               0 (2)
              4 DUP_TOP_TWO
              6 BINARY_SUBSCR
              8 LOAD_CONST               1 (True)
             10 INPLACE_XOR
             12 ROT_THREE
             14 STORE_SUBSCR
             16 LOAD_CONST               2 (None)
             18 RETURN_VALUE
于 2017-10-24T03:11:26.313 回答