Python
 Computer >> コンピューター >  >> プログラミング >> Python

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]

  1. 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 =

  2. 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==