Python-連続したブール範囲
値のリストが与えられた場合、連続したリストとして存在するブール値がどの位置にあるかを知ることに関心があります。つまり、TRUEの値に遭遇した後、FALSEの値が見つかるまで、その位置からtrueの値が連続して存在します。同様に、FALSEが見つかった場合、TRUEが見つかるまでFALSEの連続値があります。
itertoolsを使用
Wは、itertoolsモジュールのgroupbyとともにaccumulateを使用できます。この例では、指定されたリストを取得し、累積関数を適用して、sum関数を使用してまとめられた値を追跡します。リストの最後の値は、指定されたリストが終了する最後の位置です。
例
from itertools import accumulate, groupby # Given list listA = [False, True,True,False,False] print("Given list : \n",listA) # Applying accumulate res = [0] + list(accumulate(sum(1 for x in y) for x, y in groupby(listA))) # Result print("Positions for Range of contigous values:\n ",res)
出力
上記のコードを実行すると、次の結果が得られます-
Given list : [False, True, True, False, False] Positions for Range of contigous values: [0, 1, 3, 5]
列挙の使用
列挙関数とzip関数を使用して、各要素を次の要素と比較して位置を一覧表示します。それらが等しくない場合、新しい位置の値が隣接する範囲の開始点と見なされます。
例
# Given list listA = [False, True,True,False,False] print("Given list : \n",listA) # Applying enumerate res = [e for e, (x, y) in enumerate(zip([2]+ listA, listA + [2])) if x != y] # Result print("Positions for Range of contigous values:\n ",res)
出力
上記のコードを実行すると、次の結果が得られます-
Given list : [False, True, True, False, False] Positions for Range of contigous values: [0, 1, 3, 5]
-
Pythonブール演算
基本的なブール演算はand、or、not 操作。 と 操作-および操作の基本的な構文は次のとおりです。xおよび y。これは、xがfalseの場合は、xを返し、それ以外の場合はyを返すことを示します。 または operation-または操作の基本構文は次のとおりです。xまたは y。これは、xがfalseの場合はyを返し、それ以外の場合はxを返すことを示します。 ない operation-および操作の基本構文は次のとおりです。not バツ。 xがfalseの場合はtrueを返し、そうでない場合はfalseを返すことを示します。 サンプルコード x = 25 y =
-
Pythonのブール演算子とは何ですか?
論理演算子and、またはnotは、ブール演算子とも呼ばれます。 andおよびor演算子には、trueまたはfalseと評価される2つのオペランドが必要ですが、演算子ではなく、trueまたはfalseと評価される1つのオペランドが必要です。 ブール値と演算子は、両方のオペランドがtrueを返す場合にtrueを返します。 >>> a=50 >>> b=25 >>> a>40 and b>40 False >>> a>100 and b<50 False >>> a==0 and b==