如何在python列表中标识元组内部的值?

时间:2017-11-01 16:54:36

标签: python python-2.7 list indexing tuples

我正在寻找一些pythonic解决方案来检查列表中的元组中是否存在True或False。

我确实喜欢这个:

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)]    

如何以更好的方式做到这一点?

3 个答案:

答案 0 :(得分:3)

如果您打算检查元组或元组中是否存在值True,则可以使用any关键字,如下所示:

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

您还可以使用all关键字

检查所有元素是否为True

答案 1 :(得分:2)

尝试

result = True in varList[0]

答案 2 :(得分:1)

如果您还想要返回元组的索引以及比元组内的出现的索引,您可以尝试:

  def isValueInList(varList, value):
       return [(varList[lst][i],lst,i) for lst in range(len(varList)) for i in range(len(varList[lst])) if varList[lst][i] == value]

 print(isValueInList(varList, True))

结果将是:

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

其中:

第一个参数表示找到了值。

第二个参数指定列表中元组的索引。

第三个参数指定在该元组中找到的值的索引。

以下是使用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)]