2017-10-24 4 views
0

ブール値で構成されたlistというリストがあります。また、私はいくつかの(有効な)インデックスiを持っていて、それは値を切り替えるlistのインデックスです。エイリアシングを使用してリストを1回繰り返します(Python)

現在、私には:list[i] = not list[i]があります。

しかし、私の質問は、この繰り返しはlistに2回ありますか?もしそうなら、エイリアシングを通して一時的な値を設定してリストを1回だけ繰り返す方法がありますか?

私は次のことを試してみました:

temp = list[i] 
temp = not temp 

しかし、これは私のために働いていない、それはlist[i]の値のみtempの値を切り替え、およびされていません。

+0

disモジュールを使用して 'これは二回リストを反復しないのですか?'それはいますか?どうしてそう思うの? –

+0

リストをまったく反復しませんか?私はあなたが何を意味するか理解していません。 –

答えて

0

あなたは「ボンネットの下に少し」の方法を見ることができますが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 
関連する問題