假设我有一个名为 的列表list
,它由布尔值组成。还说我有一些(有效的)索引i
,这是list
我想要切换值的索引。
目前,我有:list[i] = not list[i]
。
但我的问题是,这不是迭代list
两次吗?如果是这样,有没有办法通过别名设置临时值以仅遍历列表一次?
我尝试了以下方法:
temp = list[i]
temp = not temp
但这对我不起作用,它只切换了 的值temp
,而不是 的值list[i]
。
假设我有一个名为 的列表list
,它由布尔值组成。还说我有一些(有效的)索引i
,这是list
我想要切换值的索引。
目前,我有:list[i] = not list[i]
。
但我的问题是,这不是迭代list
两次吗?如果是这样,有没有办法通过别名设置临时值以仅遍历列表一次?
我尝试了以下方法:
temp = list[i]
temp = not temp
但这对我不起作用,它只切换了 的值temp
,而不是 的值list[i]
。
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