2017-11-01 6 views
-1

私はリスト内のタプルにTrueまたはFalseがあるかどうかを調べるためにいくつかのpythonicソリューションを探しています。Pythonのリストでタプルの内部の値を特定する方法は?

私はこのようでした:

varList = [(True,)] 
temp = varList.pop(0) 
result = temp[temp.index(True,)] 
print result 

############# 
# If there are more complex result 
varList = [(True, False, False), (True, False)]  

どのようにより良い方法でこれを行うには?あなたの意図がTrue値は次のようにanyキーワードを使用することができタプルまたはタプルに存在するかどうかを確認する場合

+2

は 'varList'は常に単一の要素が含まれているのでしょうか? Pythonのように '1'と' 0'を 'True'と' False'として扱いたいですか? –

+1

varlistの例を示します。それは本当か偽かだけを含んでいますか?はいの場合、それは常に最初の要素になりますか? –

+0

@Chris_Rands問題は、複数の論理テスト結果が存在することがあります。 私はいくつかのpythonic方法を使用してTrueの存在をチェックしようとします(それは焦点だからです)。 –

答えて

1

また、タプルのインデックスだけでなく、出現タプルより内、あなたが試すことができます:

​​

を結果は次のようになります。

[(True, 0, 0), (True, 1, 0)] 

最初の引数は、値が見つかったことを意味します。

第2引数は、リスト内のタプルのインデックスを指定します。

第3引数は、そのタプル内で見つかった値のインデックスを指定します。ここで

提案編集enumerateを使用している:

def isValueInList(varList, value): 

    return [(val,innerInd, tupInd) for tupInd, tup in enumerate(varList) for innerInd, val in enumerate(tup) if val==value] 

print(isValueInList(varList, True)) 

結果は次のようになります。

[(True, 0, 0), (True, 1, 0)] 
+0

@Vasilis G.良い解決策。私は試して、それは動作します。 –

+1

@StefanPochmannが示唆しているように、 'enumerate'を使ってより便利な方法があるので、私はそれを編集しようとします。 –

2

result = True in varList[0] 
+2

ブール値のためのもっとpythonicな方法は 'any'と' all'関数を使うことです。ハウツェーバーは、リストが空のときに「True in」と「False in」アプローチと比べて異なる結果をもたらすかもしれないことに注意してください。 – dseuss

3

をお試しください:

true_exists = [ any(subset) for subset in varList ] 

は、あなたもかどうかを確認し、すべての要素は、allキーワードを使用してTrueです。

関連する問題